亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? balib.s

?? vxworks的源代碼
?? S
字號:
/* bALib.s - buffer manipulation library assembly language routines *//* Copyright 1984-2000 Wind River Systems, Inc. */	.data	.globl  _copyright_wind_river	.long   _copyright_wind_river/*modification history--------------------01b,20jun00,ur   Removed all non-Coldfire stuff.01a,17mar00,dra  Created from T1.0.1 ColdFire and T2 m68k ports.*//*DESCRIPTIONThis library contains optimized versions of the routines in bLib.cfor manipulating buffers of variable-length byte arrays.NOMANUALSEE ALSO: bLib, ansiString*/#define _ASMLANGUAGE#include "vxWorks.h"#include "asm.h"#ifndef	PORTABLE	/* exports */	.globl	_bcopy	.globl	_bcopyBytes	.globl	_bcopyWords	.globl	_bcopyLongs	.globl	_bfill	.globl	_bfillBytes	.text	.even/********************************************************************************* bcopy - copy one buffer to another** This routine copies the first `nbytes' characters from* `source' to `destination'.  Overlapping buffers are handled correctly.* The copy is optimized by copying 4 bytes at a time if possible,* (see bcopyBytes (2) for copying a byte at a time only).** SEE ALSO: bcopyBytes (2)** NOMANUAL - manual entry in bLib (1)* void bcopy (source, destination, nbytes)*     char *	source;		/* pointer to source buffer      **     char *	destination	/* pointer to destination buffer **     int 	nbytes;		/* number of bytes to copy       **/_bcopy:	link	a6,#0	movel	d2,a7@-			/* save d2 */	/* put src in a0, dest in a1, and count in d0 */	movel	a6@(ARG1),a0		/* source */	movel	a6@(ARG2),a1		/* destination */	movel	a6@(ARG3),d0		/* nbytes */	/* Find out if there is an overlap problem.	 * We have to copy backwards if destination lies within source,	 * i.e. ((destination - source) > 0 && < nbytes) */	movel	a1,d1			/* destination */	subl	a0,d1			/* - source */	jls	cFwd			/* <= 0 means copy forward */	cmpl	d0,d1			/* compare to nbytes */	jcs	cBak			/* < nbytes means copy backwards */cFwd:	/* if length is less than 16, it's cheaper to do a byte copy */	cmpl	#16,d0			/* test count */	jcs	cFwd10			/* do byte copy */	/* 	 * If destination and source are not both odd, or both even,	 * we must do a byte copy, rather than a long copy.	 *	 * Note: this restriction does NOT apply to the 68040 and 68060.	 */	movew	a0,d1	movew	a1,d2	eorl	d2,d1			/* d1 = destination ^ source */	btst	#0,d1	jne	cFwd10	/* If the buffers are odd-aligned, copy the first byte */	btst	#0,d2			/* d2 has source */	jeq	cFwd0			/* if even-aligned */	moveb	a0@+,a1@+		/* copy the byte */	subl	#1,d0			/* decrement count by 1 */cFwd0:	/* No DBcc instructions, so the logic is a fair bit different. */		movel	d0,d2	andl	#0x0f,d0		/* remainder in d0 */	asrl	#4,d2			/* count /= 16 */	jra	cFwd3			/* do the test first */cFwd2:	movel	a0@+,a1@+		/* move 4 bytes */	movel	a0@+,a1@+		/* move 4 bytes */	movel	a0@+,a1@+		/* move 4 bytes */	movel	a0@+,a1@+		/* move 4 bytes */cFwd3:	subql	#1, d2			/* decrement count */	bpl	cFwd2			/* loop test */		/* byte by byte copy */cFwd10:	jra	cFwd13			/* do the test first */cFwd12:	moveb	a0@+,a1@+		/* move a byte */cFwd13:	subql	#1, d0			/* decrement count */	bpl	cFwd12			/* loop test */	cFwd14:		movel	a7@+,d2			/* restore d2 */	unlk	a6	rts	/* -------------------- copy backwards ---------------------- */cBak:	addl	d0,a0			/* make a0 point at end of from buf */	addl	d0,a1			/* make a1 point at end of to buffer */	/* if length is less than 10, cheaper to do a byte move */	cmpl	#10,d0			/* test count */	jcs	cBak10			/* do byte move */	/*	 * If destination and source are not both odd, or both even,	 * we must do a byte copy, rather than a long copy.	 *	 * Note: this restriction does NOT apply to the 68040 and 68060.	 */	movew	a0,d1	movew	a1,d2	eorl	d2,d1			/* d1 = destination ^ source */	btst	#0,d1	jne	cBak10	/* If the buffers are odd-aligned, copy the first byte */	btst	#0,d2			/* d2 has source */	jeq	cBak0			/* if even-aligned */	moveb	a0@-,a1@-		/* copy the byte */	subl	#1,d0			/* decrement count by 1 */	/* Since we're copying 4 bytes at a crack, divide count by 4.	 * Keep the remainder in d0, so we can do those bytes at the	 * end of the loop. */cBak0:	movel	d0,d2	/* No DBcc instructions, so the logic is a fair bit different. */		andl	#0x0f,d0		/* remainder in d0 */	asrl	#4,d2			/* count /= 16 */	jra	cBak3			/* do the test first */cBak2:	movel	a0@-,a1@-		/* move 4 bytes */	movel	a0@-,a1@-		/* move 4 bytes */	movel	a0@-,a1@-		/* move 4 bytes */	movel	a0@-,a1@-		/* move 4 bytes */cBak3:	subql	#1, d2			/* decrement count */	bpl	cBak2			/* loop test */		/* byte by byte copy */cBak10:	jra	cBak13			/* do the test first */cBak12:	moveb	a0@-,a1@-		/* move a byte */cBak13:	subql	#1, d0			/* decrement count */	bpl	cBak12			/* loop test */		movel	a7@+,d2			/* restore d2 */	unlk	a6	rts/********************************************************************************* bcopyBytes - copy one buffer to another a byte at a time** This routine copies the first `nbytes' characters from* `source' to `destination'.* It is identical to bcopy except that the copy is always performed* a byte at a time.  This may be desirable if one of the buffers* can only be accessed with byte instructions, as in certain byte-wide* memory-mapped peripherals.** SEE ALSO: bcopy (2)** NOMANUAL - manual entry in bLib (1)* void bcopyBytes (source, destination, nbytes)*     char *	source;		/* pointer to source buffer      **     char *	destination;	/* pointer to destination buffer **     int 	nbytes;		/* number of bytes to copy       **/_bcopyBytes:	link	a6,#0	/* put src in a0, dest in a1, and count in d0 */	movel	a6@(ARG1),a0		/* source */	movel	a6@(ARG2),a1		/* destination */	movel	a6@(ARG3),d0		/* count */	/* 	 * Find out if there is an overlap problem.	 * We have to copy backwards if destination lies within source,	 * i.e. ((destination - source) > 0 && < nbytes)	 */	movel	a1,d1			/* destination */	subl	a0,d1			/* - source */	jls	cbFwd			/* <= 0 means copy forward */	cmpl	d0,d1			/* compare to nbytes */	jcs	cbBak			/* < nbytes means copy backwards */	/* Copy the whole thing forward, byte by byte */cbFwd:	jra	cbFwd3cbFwd1:	moveb	a0@+,a1@+		/* move a byte */cbFwd3:	subql	#1, d0			/* decrement count */	bpl	cbFwd1		unlk	a6	rts	/* Copy the whole thing backward, byte by byte */cbBak:	addl	d0,a0			/* make a0 point at end of from buffer*/	addl	d0,a1			/* make a1 point at end of to buffer */	jra	cbBak3			/* do the test first */cbBak2:	moveb	a0@-,a1@-		/* move a byte */cbBak3:	subql	#1, d0			/* decrement count */	bpl	cbBak2			/* loop test */	unlk	a6	rts/********************************************************************************* bcopyWords - copy one buffer to another a word at a time** This routine copies the first `nwords' words from* `source' to `destination'.* It is similar to bcopy except that the copy is always performed* a word at a time.  This may be desirable if one of the buffers* can only be accessed with word instructions, as in certain word-wide* memory-mapped peripherals.  The source and destination must be word-aligned.** SEE ALSO: bcopy (2)** NOMANUAL - manual entry in bLib (1)* void bcopyWords (source, destination, nwords)*     char *	source;		/* pointer to source buffer      **     char *	destination;	/* pointer to destination buffer **     int	nwords;		/* number of words to copy       **/_bcopyWords:	link	a6,#0	/* put src in a0, dest in a1, and count in d0 */	movel	a6@(ARG1),a0		/* source */	movel	a6@(ARG2),a1		/* destination */	movel	a6@(ARG3),d0		/* count */	asll	#1,d0			/* convert count to bytes */	/*	 * Find out if there is an overlap problem.	 * We have to copy backwards if destination lies within source,	 * i.e. ((destination - source) > 0 && < nbytes)	 */	movel	a1,d1			/* destination */	subl	a0,d1			/* - source */	jls	cwFwd			/* <= 0 means copy forward */	cmpl	d0,d1			/* compare to nbytes */	jcs	cwBak			/* < nbytes means copy backwards */	/* Copy the whole thing forward, word by word */cwFwd:	asrl	#1,d0			/* convert count to words */	jra	cwFwd3			/* do the test first */cwFwd2:	movew	a0@+,a1@+		/* move a word */cwFwd3:	subql	#1, d0			/* decrement count */	bpl	cwFwd2			/* loop test */		unlk	a6	rts	/* Copy the whole thing backward, word by word */cwBak:	addl	d0,a0			/* make a0 point at end of from buffer*/	addl	d0,a1			/* make a1 point at end of to buffer */	asrl	#1,d0			/* convert count to words */	jra	cwBak3			/* do the test first */cwBak2:	movew	a0@-,a1@-		/* move a word */cwBak3:	subql	#1, d0			/* decrement count */	bpl	cwBak2			/* loop test */		unlk	a6	rts/********************************************************************************* bcopyLongs - copy one buffer to another a long at a time** This routine copies the first `nlongs' longs from* `source' to `destination'.* It is similar to bcopy except that the copy is always performed* a long at a time.  This may be desirable if one of the buffers* can only be accessed with long instructions, as in certain long-wide* memory-mapped peripherals.  The source and destination must be long-aligned.** SEE ALSO: bcopy (2)** NOMANUAL - manual entry in bLib (1)* void bcopyLongs (source, destination, nlongs)*     char *	source;		/* pointer to source buffer      **     char *	destination;	/* pointer to destination buffer **     int 	nlongs;		/* number of longs to copy       **/_bcopyLongs:	link	a6,#0	/* put src in a0, dest in a1, and count in d0 */	movel	a6@(ARG1),a0		/* source */	movel	a6@(ARG2),a1		/* destination */	movel	a6@(ARG3),d0		/* count */	asll	#2,d0			/* convert count to bytes */	/* 	 * Find out if there is an overlap problem.	 * We have to copy backwards if destination lies within source,	 * i.e. ((destination - source) > 0 && < nbytes)	 */	movel	a1,d1			/* destination */	subl	a0,d1			/* - source */	jls	clFwd			/* <= 0 means copy forward */	cmpl	d0,d1			/* compare to nbytes */	jcs	clBak			/* < nbytes means copy backwards */	/* Copy the whole thing forward, long by long */clFwd:	asrl	#2,d0			/* convert count to longs */	jra	clFwd3			/* do the test first */clFwd2:	movel	a0@+,a1@+		/* move a long */clFwd3:	subql	#1, d0			/* decrement count */	bpl	clFwd2			/* loop test */		unlk	a6	rts	/* Copy the whole thing backward, long by long */clBak:	addl	d0,a0			/* make a0 point at end of from buffer*/	addl	d0,a1			/* make a1 point at end of to buffer */	asrl	#2,d0			/* convert count to longs */	jra	clBak3			/* do the test first */clBak2:	movel	a0@-,a1@-		/* move a long */clBak3:	subql	#1, d0			/* decrement count */	bpl	clBak2			/* loop test */		unlk	a6	rts/********************************************************************************* bfill - fill buffer with character** This routine fills the first `nbytes' characters of the specified buffer* with the specified character.* The fill is optimized by filling 4 bytes at a time if possible,* (see bfillBytes (2) for filling a byte at a time only).** SEE ALSO: bfillBytes (2)** NOMANUAL - manual entry in bLib (1)* void bfill (buf, nbytes, ch)*     char *	buf;		/* pointer to buffer              **     int 	nbytes;		/* number of bytes to fill        **     char 	ch;		/* char with which to fill buffer **/_bfill:	link	a6,#0	movel	d2,a7@-	movel	d3,a7@-	/* put buf in a0, nbytes in d0, and ch in d1 */	movel	a6@(ARG1),a0		/* get buf */	movel	a6@(ARG2),d0		/* nbytes */	movel	a6@(ARG3),d1		/* ch */	/* if length is less than 20, cheaper to do a byte fill */	cmpl	#20,d0			/* test count */	jcs	fb5			/* do byte fill */	/* Put ch in all four bytes of d1, so we can fill 4 bytes at a crack */	clrl	d2		/* d1 == ??????XY d2 == 00000000 */	moveb	d1, d2		/* d1 == ??????XY d2 == 000000XY */	moveb	d2, d1		/* d1 == 000000XY d2 == 000000XY */	lsll	#8,d2		/* d1 == 0000XY00 d2 == 0000XY00 */	orl	d2, d1		/* d1 == 0000XYXY d2 == 0000XY00 */	movew	d1, d2		/* d1 == 0000XYXY d2 == 0000XYXY */	swapw	d1		/* d1 == XYXY0000 d2 == 0000XYXY */	orl	d2, d1		/* d1 == XYXYXYXY d2 == 0000XYXY */			/* If the buffer is odd-aligned, copy the first byte */	movew	a0,d2	btst	#0,d2			/* d2 has source */	jeq	fb0			/* if even-aligned */	moveb	d1,a0@+			/* copy the byte */	subl	#1,d0			/* decrement count by 1 */	/* 	 * Since we're copying 4 bytes at a crack, divide count by 4.	 * Keep the remainder in d0, so we can do those bytes at the	 * end of the loop.	 */fb0:	movel	d0,d3	andl	#3,d0			/* remainder in d0 */	asrl	#2,d3			/* count /= 4 */	jra	fb3			/* do the test first */fb2:	movel	d1,a0@+			/* move 4 bytes */fb3:	subql	#1,d3			/* decrement count */	bpl	fb2			/* loop test */	/* do the extras at the end */	jra	fb5			/* do the test first */fb4:	moveb	d1,a0@+			/* move 1 byte */fb5:	subql	#1,d0			/* decrement count */	bpl	fb4			/* loop test */		movel	a7@+,d3	movel	a7@+,d2	unlk	a6	rts/********************************************************************************* bfillBytes - fill buffer with character a byte at a time** This routine fills the first `nbytes' characters of the* specified buffer with the specified character.* It is identical to bfill (2) except that the fill is always performed* a byte at a time.  This may be desirable if the buffer* can only be accessed with byte instructions, as in certain byte-wide* memory-mapped peripherals.** SEE ALSO: bfill (2)** NOMANUAL - manual entry in bLib (1)* void bfillBytes (buf, nbytes, ch)*     char *	buf;		/* pointer to buffer              **     int 	nbytes;		/* number of bytes to fill        **     char 	ch;		/* char with which to fill buffer **/_bfillBytes:	link	a6,#0	movel	d2,a1			/* save d2 in a1 */	/* put src in a0, dest in a1, and count in d0 */	movel	a6@(ARG1),a0		/* get destination */	movel	a6@(ARG2),d0		/* count */	movel	a6@(ARG3),d1		/* ch */	/* Copy the whole thing, byte by byte */	movel	d0,d2			/* Set up d2 as the outer loop ctr */	swap	d2			/* get upper word into dbra counter */	jra	fby3			/* do the test first */fby2:	moveb	d1,a0@+			/* fill a byte */fby3:	subql	#1, d0			/* decrement count */	bpl	fby2			/* loop test */		movel	a1,d2			/* restore d2 */	unlk	a6	rts#endif	/* !PORTABLE */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美专区在线观看一区| 久久精品人人做| 欧美一区二区三区小说| 国产午夜精品一区二区三区四区| 国产精品美女久久久久高潮| 首页国产欧美日韩丝袜| 成人精品一区二区三区中文字幕| 69堂精品视频| 亚洲免费av高清| 国产精品一区二区x88av| 欧美日韩一区二区欧美激情| 亚洲欧洲日韩一区二区三区| 国产尤物一区二区在线| 4438x亚洲最大成人网| 樱花影视一区二区| 不卡在线视频中文字幕| 欧美国产精品v| 国内精品视频666| 欧美一级片在线观看| 午夜视频在线观看一区二区三区| 91丨九色丨蝌蚪富婆spa| 国产精品理伦片| 国产精品99久久久久久久女警 | 久久91精品久久久久久秒播| av亚洲精华国产精华精华| 久久久国产综合精品女国产盗摄| 奇米一区二区三区| 欧美日韩黄视频| 亚洲一区二区av在线| 色先锋资源久久综合| 亚洲乱码一区二区三区在线观看| 99在线视频精品| 国产精品毛片a∨一区二区三区| 国产成人在线视频网站| 久久品道一品道久久精品| 极品少妇xxxx偷拍精品少妇| 精品国产麻豆免费人成网站| 精品一区二区久久久| 久久视频一区二区| 国产成人亚洲综合a∨婷婷| 久久久亚洲综合| 99久久99久久久精品齐齐| 亚洲欧洲日产国码二区| 91亚洲永久精品| 亚洲一区二区三区美女| 欧美精品久久一区二区三区| 日韩av电影免费观看高清完整版在线观看| 69精品人人人人| 久久国产麻豆精品| 国产午夜精品理论片a级大结局 | 三级在线观看一区二区| 在线播放日韩导航| 精品一区在线看| 欧美国产乱子伦| 91久久人澡人人添人人爽欧美| 亚洲香肠在线观看| 欧美一区三区二区| 国产麻豆欧美日韩一区| 中文字幕一区在线观看视频| 91久久精品一区二区三| 日韩成人精品视频| 国产女人18水真多18精品一级做| www.亚洲色图| 日韩国产欧美在线视频| 国产三级欧美三级日产三级99 | 国产成人av电影| 亚洲精品成a人| 精品国产乱码久久久久久闺蜜| 国产传媒日韩欧美成人| 日韩欧美一区在线| 国产精品乡下勾搭老头1| 亚洲欧美经典视频| 欧美一级片在线观看| 成人黄色电影在线| 亚洲一级二级三级| 精品久久久久99| 91国产视频在线观看| 日韩欧美在线观看一区二区三区| 美女视频黄 久久| 亚洲日韩欧美一区二区在线| 欧美一区二区私人影院日本| 成人app下载| 久久99热这里只有精品| 亚洲自拍都市欧美小说| 久久久久久夜精品精品免费| 在线精品视频免费观看| 高清在线不卡av| 美国三级日本三级久久99| 伊人一区二区三区| 国产精品乱人伦| 日韩一级欧美一级| 在线观看成人免费视频| 福利电影一区二区| 精品一区中文字幕| 日韩精品1区2区3区| 一区二区三区在线免费观看| 国产欧美一二三区| 日韩你懂的在线播放| 欧美色成人综合| 日本乱人伦aⅴ精品| 不卡av在线网| 成人精品国产福利| 国产福利精品一区二区| 精品一区在线看| 极品美女销魂一区二区三区| 午夜久久久久久电影| 亚洲精品国产第一综合99久久| 国产欧美日韩三区| 久久欧美一区二区| 欧美mv日韩mv国产| 日韩色视频在线观看| 91精品啪在线观看国产60岁| 欧美日韩在线免费视频| 在线精品国精品国产尤物884a| 色婷婷综合久色| 色悠悠久久综合| 色先锋久久av资源部| 欧美亚洲综合在线| 欧美伊人久久大香线蕉综合69| 欧洲激情一区二区| 在线视频一区二区三| 在线观看视频91| 欧美日韩一区二区三区在线看| 欧美色综合天天久久综合精品| 成人一区二区三区在线观看| 成人精品一区二区三区中文字幕| 成人美女在线视频| 在线一区二区三区四区五区| 欧美探花视频资源| 91精品国产欧美日韩| 日韩欧美综合在线| 久久久精品中文字幕麻豆发布| 国产视频一区在线播放| 亚洲区小说区图片区qvod| 一区二区三区蜜桃网| 日韩av中文字幕一区二区| 久久国产综合精品| 成人精品视频网站| 在线欧美日韩精品| 日韩精品专区在线影院观看| 国产欧美日韩卡一| 亚洲私人影院在线观看| 偷窥国产亚洲免费视频 | 在线91免费看| 精品国产亚洲一区二区三区在线观看| 欧美成人vps| 亚洲视频在线观看一区| 午夜一区二区三区在线观看| 久久精品国产99久久6| 成人网在线免费视频| 欧美色精品在线视频| 亚洲精品一区二区三区蜜桃下载 | 亚洲精品久久久蜜桃| 日韩va欧美va亚洲va久久| 成人永久免费视频| 欧美人牲a欧美精品| 精品精品国产高清一毛片一天堂| 国产欧美一区二区精品性色超碰| 亚洲成在人线免费| 国产精品原创巨作av| 欧美精品一级二级| 国产精品欧美精品| 日本vs亚洲vs韩国一区三区二区| 成人性生交大片免费看在线播放| 欧美日韩精品欧美日韩精品一| 久久亚洲免费视频| 亚洲成av人片在线| 成人h动漫精品| 精品嫩草影院久久| 午夜久久久久久| 91免费看片在线观看| 久久影音资源网| 日韩影视精彩在线| 一本一本久久a久久精品综合麻豆| 欧美成人精精品一区二区频| 亚洲综合一区二区三区| av一区二区不卡| 国产欧美日韩不卡免费| 毛片av一区二区| 欧美性生活大片视频| 中文字幕一区二| 国产高清在线精品| 精品国产一区二区三区四区四| 亚洲大片精品永久免费| 91精品1区2区| 亚洲三级电影网站| 99这里只有久久精品视频| 国产午夜精品一区二区| 国产呦精品一区二区三区网站| 日韩三级视频中文字幕| 午夜av一区二区三区| 欧美日韩www| 午夜精品福利一区二区蜜股av| 色婷婷综合久久久| 亚洲精品一二三四区| 色国产综合视频| 亚洲免费在线播放| 91免费在线视频观看| 亚洲另类春色国产| 91成人在线精品|