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

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

?? balib.s

?? vxworks的源代碼
?? S
?? 第 1 頁 / 共 2 頁
字號:
/* bALib.s - buffer manipulation library assembly language routines *//* Copyright 1984-1994 Wind River Systems, Inc. */	.data	.globl  _copyright_wind_river	.long   _copyright_wind_river/*modification history--------------------01y,26oct94,tmk  added mc68LC040 support01x,30may94,tpr  added MC68060 cpu support.		 tweak comment modifications.01x,17oct94,rhp  delete obsolete doc references to strLib, spr#371201w,23aug92,jcf  changed bxxx to jxx.		 changed all signed comparisons to unsigned.01v,26may92,rrr  the tree shuffle01u,07jan92,JLF	 fixed Motorola 68040 ERRATA I7 for move16 instruction.	    shl  fixed mod history number.01t,17oct91,yao  added support for CPU32.01s,04oct91,rrr  passed through the ansification filter		  -fixed #else and #endif		  -changed VOID to void		  -changed ASMLANGUAGE to _ASMLANGUAGE		  -changed copyright notice01r,24jul91,JLF   added 68040 support and optimization.01q,14mar90,jdi   documentation cleanup; library declared NOMANUAL.01p,09sep89,gae   fixed documentation of bcopy{Word,Long}s;		    added PORTABLE define.01o,10feb89,jcf   added bcopyWords (), and bcopyLongs ().01n,30aug88,gae   more documentation tweaks.01m,20aug88,gae   documentation.01l,22jun88,dnw   changed bcopy() and bcopyBytes() to handle overlapping buffers		    correctly, and deleted bmove() and bmoveBytes().01k,05jun88,dnw   changed from bufALib to bALib.01j,30may88,dnw   changed to v4 names.01i,13feb88,dnw   added .data before .asciz above, for Intermetrics assembler.01h,05nov87,jlf   documentation01g,24mar87,jlf   documentation01f,21dec86,dnw   changed to not get include files from default directories.01e,31oct86,dnw   Eliminated magic f/b numeric labels which mitToMot can't		    handle.		  Changed "moveml" instructions to use Motorola style register		    lists, which are now handled by "aspp".		  Changed "mov[bwl]" to "move[bwl]" for compatiblity w/Sun as.01d,26mar86,dnw   Fixed bugs introduced in 01c w/ not saving enough regs.01c,18mar86,dnw   Added cpybytes, filbytes, and movbytes.		  More optimizations.		  Fixed documentation.		  Fixed bug in movbuf.01b,18sep85,jlf   Made cpybuf, filbuf, and movbuf work properly		      with 0 length strings.01a,17jul85,jlf   Written, by modifying bufLib.c, v01h.*//*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 (CPU==MC68000 || CPU==MC68010 || CPU==MC68020 || CPU==CPU32)	/* 	 * 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	eorb	d2,d1			/* d1 = destination ^ source */	btst	#0,d1	jne	cFwd10#endif	/* (CPU==MC68000 || CPU==MC68010 || CPU==MC68020 || CPU==CPU32) */#if (CPU==MC68040 || CPU==MC68060 || CPU==MC68LC040)	movew   a1,d2			/* copy address needed for next test */#endif	/* (CPU==MC68040 || CPU==MC68060 || CPU==MC68LC040) */	/* 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:#if (CPU == MC68040 || CPU==MC68060 || CPU==MC68LC040)	movew	a0,d1	movew	a1,d2	orw	d1,d2			/* OR the addresses together */	andw	#0x000f,d2		/* if all are mod-16, we can MOVE16 */	jne 	cFwd0d			/* else, skip to next test */	movl	d0,d1			/* work with "d1" */	lsrl	#4,d1			/* divide count by 16 */	nop				/* ERRATA: I7 */	jra 	cFwd0b			/* and jump into loop */cFwd0a:	.word   0xf620,0x9000		/* move16 (a0)+,(a1)+ */cFwd0b:	dbra	d1,cFwd0a		/* loop until (short) rollover */	subl	#0x10000,d1		/* then subtract from MSW of count */	jpl 	cFwd0a			/* loop until result is negative */	andl	#0x0f,d0		/* then mask all but lower 16 bytes */	jra	cFwd10			/* then finish with byte copy */#endif	/* (CPU == MC68040 || CPU==MC68060 || CPU==MC68LC040) */	/* 	 * Since we're copying 16 bytes at a crack, divide count by 16.	 * Keep the remainder in d0, so we can do those bytes at the	 * end of the loop.	 */cFwd0d:	movel	d0,d2#if (CPU==MC68010)	/* 	 * Note: because of the DBRA pipeline on the 68010, it is faster	 * for it to limit the loop to 1 move instruction.  For all other	 * chips, it is more efficient to use 4.	 */	andl	#0x03,d0		/* remainder in d0 */	asrl	#2,d2			/* count /= 4 */#endif	/* (CPU==MC68010) */#if (CPU==MC68000 || CPU==MC68020 || CPU==MC68040 || CPU==MC68060 || \     CPU==MC68LC040 || CPU==CPU32)	andl	#0x0f,d0		/* remainder in d0 */	asrl	#4,d2			/* count /= 16 */#endif	/* (CPU==MC68000 || CPU==MC68020 || CPU==MC68040 || CPU==MC68060 || \	 *  CPU==MC68LC040 || CPU==CPU32) */	/* 	 * The fastest way to do the copy is with a dbra loop, but dbra	 * uses only a 16 bit counter.  Therefore, break up count into	 * two pieces, to be used as an inner loop and an outer loop	 */	movel	d2,d1			/* Set up d1 as the outer loop ctr */	swap	d1			/* get upper word into dbra counter */	jra	cFwd3			/* do the test first */cFwd2:	movel	a0@+,a1@+		/* move 4 bytes */#if (CPU==MC68000 || CPU==MC68020 || CPU==MC68040 || CPU==MC68060 || \     CPU==MC68LC040 || CPU==CPU32)	movel	a0@+,a1@+		/* no, make that 16 bytes */	movel	a0@+,a1@+	movel	a0@+,a1@+#endif  /* (CPU==MC68000 || CPU==MC68020 || CPU==MC68040 || CPU==MC68060 || \	 *  CPU==MC68LC040 || CPU==CPU32) */cFwd3:	dbra	d2,cFwd2		/* inner loop test */	dbra	d1,cFwd2		/* outer loop test */	/* byte by byte copy */cFwd10:	movel	d0,d1			/* Set up d1 as the outer loop ctr */	swap	d1			/* get upper word into dbra counter */	jra	cFwd13			/* do the test first */cFwd12:	moveb	a0@+,a1@+		/* move a byte */cFwd13:	dbra	d0,cFwd12		/* inner loop test */	dbra	d1,cFwd12		/* outer loop test */	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 (CPU==MC68000 || CPU==MC68010 || CPU==MC68020 || CPU==CPU32)	/*	 * 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	eorb	d2,d1			/* d1 = destination ^ source */	btst	#0,d1	jne	cBak10#endif	/* (CPU==MC68000 || CPU==MC68010 || CPU==MC68020 || CPU==CPU32) */#if (CPU==MC68040 || CPU==MC68060 || CPU==MC68LC040)	movew	a1,d2			/* set this up for the next test */#endif	/* (CPU==MC68040 || CPU==MC68060 || CPU==MC68LC040) */	/* 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#if (CPU==MC68010)	/* 	 * Note: because of the DBRA pipeline on the 68010, it is faster	 * for it to limit the loop to 1 move instruction.  For all other	 * chips, it is more efficient to use 4.	 */	andl	#0x03,d0		/* remainder in d0 */	asrl	#2,d2			/* count /= 4 */#endif	/* (CPU==MC68010) */#if (CPU==MC68000 || CPU==MC68020 || CPU==MC68040 || CPU==MC68060 || \     CPU==MC68LC040 || CPU==CPU32)	andl	#0x0f,d0		/* remainder in d0 */	asrl	#4,d2			/* count /= 16 */#endif  /* (CPU==MC68000 || CPU==MC68020 || CPU==MC68040 || CPU==MC68060 || \	 *  CPU==MC68LC040 || CPU==CPU32) */	/* 	 * The fastest way to do the copy is with a dbra loop, but dbra	 * uses only a 16 bit counter.  Therefore, break up count into	 * two pieces, to be used as an inner loop and an outer loop	 */	movel	d2,d1			/* Set up d1 as the outer loop ctr */	swap	d1			/* get upper word into dbra counter */	jra	cBak3			/* do the test first */cBak2:	movel	a0@-,a1@-		/* move 4 bytes */#if (CPU==MC68000 || CPU==MC68020 || CPU==MC68040 || CPU==MC68060 || \     CPU==MC68LC040 || CPU==CPU32)	movel	a0@-,a1@-		/* no, make that 16 bytes */	movel	a0@-,a1@-	movel	a0@-,a1@-#endif  /* (CPU==MC68000 || CPU==MC68020 || CPU==MC68040 || CPU==MC68060 || \	 *  CPU==MC68LC040 || CPU==CPU32) */cBak3:	dbra	d2,cBak2		/* inner loop test */	dbra	d1,cBak2		/* outer loop test */	/* byte by byte copy */cBak10:	movel	d0,d1			/* Set up d1 as the outer loop ctr */	swap	d1			/* get upper word into dbra counter */	jra	cBak13			/* do the test first */cBak12:	moveb	a0@-,a1@-		/* move a byte */cBak13:	dbra	d0,cBak12		/* inner loop test */	dbra	d1,cBak12		/* outer 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 */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99国产精品久久久久| 中文字幕日本不卡| ㊣最新国产の精品bt伙计久久| 亚洲一二三四久久| 国产成人精品亚洲777人妖 | 国产精品美女视频| 免费看日韩精品| 91黄色激情网站| 久久久久97国产精华液好用吗 | 国产日韩精品一区二区三区 | 日本91福利区| 在线观看一区不卡| 国产欧美日本一区二区三区| 日韩va欧美va亚洲va久久| 色天天综合色天天久久| 欧美国产日产图区| 国产精品一区三区| 欧美精品一区二区三区蜜臀 | 一本一道久久a久久精品综合蜜臀 一本一道综合狠狠老 | 强制捆绑调教一区二区| 色诱亚洲精品久久久久久| 久久九九久久九九| 极品少妇xxxx偷拍精品少妇| 欧美精品乱码久久久久久| 一区二区成人在线| 日本高清无吗v一区| 亚洲人成7777| 色呦呦国产精品| 亚洲三级小视频| www.成人网.com| 中文字幕在线观看一区二区| 国产黄人亚洲片| 国产精品久久精品日日| 99久免费精品视频在线观看| 中文字幕免费一区| 91女神在线视频| 亚洲色图都市小说| 欧美午夜精品久久久| 亚洲午夜激情网页| 欧美一区二区三区精品| 精品午夜一区二区三区在线观看| 精品国产一区二区三区久久久蜜月 | eeuss鲁片一区二区三区| 国产精品视频免费| 91免费版pro下载短视频| 一区二区三区在线视频观看58| 一本色道综合亚洲| 天天av天天翘天天综合网| 欧美一区二区三区电影| 国产一区二区三区香蕉| 国产精品久久久久久亚洲伦| 色综合婷婷久久| 亚洲超丰满肉感bbw| 欧美mv日韩mv| 波多野结衣视频一区| 一级中文字幕一区二区| 欧美一卡在线观看| 国产91精品久久久久久久网曝门 | 国产亚洲精品福利| 99re在线视频这里只有精品| 亚洲国产精品精华液网站| 欧美成人r级一区二区三区| 国产成人超碰人人澡人人澡| 一区二区三区精品在线| 精品日韩欧美在线| av欧美精品.com| 日本成人在线一区| 国产精品美女久久久久aⅴ| 欧洲日韩一区二区三区| 蜜臀99久久精品久久久久久软件| 国产精品私房写真福利视频| 欧美日韩免费电影| 国产电影一区二区三区| 午夜av电影一区| 国产精品美女www爽爽爽| 在线不卡免费欧美| av电影在线观看完整版一区二区| 日韩不卡一二三区| 亚洲日本一区二区| 精品理论电影在线| 欧美色图免费看| 成人福利在线看| 美女性感视频久久| 亚洲综合小说图片| 国产精品你懂的| 日韩精品一区二区三区视频播放| 成人精品一区二区三区四区| 日本视频一区二区三区| 亚洲黄色录像片| 中文天堂在线一区| 日韩欧美国产1| 在线电影院国产精品| 色综合一区二区三区| 成人在线视频首页| 国产一区在线不卡| 免费在线看成人av| 亚洲成av人片| 亚洲午夜一二三区视频| 综合久久国产九一剧情麻豆| 欧美国产乱子伦| 久久久久国产精品麻豆| 欧美成人在线直播| 日韩欧美中文一区二区| 欧美日韩高清一区二区三区| 色天天综合色天天久久| 99久久免费精品高清特色大片| 国产**成人网毛片九色| 黄网站免费久久| 国产真实乱偷精品视频免| 精品一区二区三区在线视频| 久久成人久久爱| 国内外成人在线视频| 精品无人区卡一卡二卡三乱码免费卡| 视频一区视频二区中文| 日韩不卡免费视频| 日本不卡视频在线| 麻豆专区一区二区三区四区五区| 污片在线观看一区二区| 亚洲韩国精品一区| 日韩精品视频网| 久久激情五月激情| 久久国产生活片100| 精彩视频一区二区三区 | 青青草国产精品亚洲专区无| 日韩精品一二区| 精品在线观看视频| 国模娜娜一区二区三区| 国产成人精品一区二区三区网站观看| 成人性视频免费网站| 91欧美一区二区| 欧美肥妇bbw| 久久久久久久综合日本| 国产精品嫩草久久久久| 又紧又大又爽精品一区二区| 亚洲高清免费视频| 九色综合国产一区二区三区| 国产成人综合在线观看| 91麻豆精品在线观看| 欧美日韩中文国产| 欧美成人在线直播| 国产精品国产三级国产aⅴ入口| 亚洲精品中文字幕乱码三区| 丝袜亚洲另类欧美| 国产精品一区二区男女羞羞无遮挡 | 日本成人在线不卡视频| 国产一区二区三区电影在线观看| 成人午夜短视频| 欧美三级中文字幕| 欧美电影免费观看高清完整版在线观看| 精品久久久久av影院 | 色婷婷精品大视频在线蜜桃视频| 欧美视频一区二区在线观看| 精品久久久久久最新网址| 国产精品免费免费| 日韩国产在线观看一区| 国产91精品在线观看| 欧美日本国产一区| 国产精品美女久久久久久久| 午夜精品123| 成人一区二区三区在线观看| 欧美日韩一级视频| 国产精品国产三级国产有无不卡| 日本成人在线不卡视频| 一本一道波多野结衣一区二区| 精品不卡在线视频| 一区二区三区四区在线| 国产乱人伦精品一区二区在线观看 | 精品国内二区三区| 亚洲国产精品一区二区www在线 | 国产亚洲精品中文字幕| 亚洲国产视频网站| 成人高清免费观看| 精品久久久影院| 天天av天天翘天天综合网色鬼国产| 成人免费视频视频在线观看免费 | 国产天堂亚洲国产碰碰| 视频一区二区三区在线| 91麻豆视频网站| 国产精品污污网站在线观看| 久久99热这里只有精品| 欧美日韩高清在线播放| 亚洲人成网站精品片在线观看| 国产成人激情av| 精品国产乱码久久久久久1区2区| 午夜国产精品影院在线观看| 91精彩视频在线观看| 日韩美女久久久| av福利精品导航| 中文字幕在线一区免费| 国产精品一二三| 欧美精品一区男女天堂| 美国三级日本三级久久99| 91精品国产综合久久久久久漫画| 亚洲午夜激情av| 日本丶国产丶欧美色综合| 亚洲欧美另类小说| 色94色欧美sute亚洲线路一久| 国产精品久久久久久久久免费丝袜| 国产成人精品免费在线| 欧美国产欧美综合|