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

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

?? copy.c

?? 詳細介紹了一篇關于pci開發的接口芯片
?? C
字號:
/* copy.c

   Copy addr1 -> addr2.
   see clib1.h for "flags".
      Flags supported:
         SIZE_xxxx
         ADDRx_SAME

   Entry:
   Exit:    <> if OK, else illegal call.
            Illegal call is if neither address increments.
*/

#include <clib1.h>

extern int x4gbinitialized;


int copy( LONG length, VOID *addr1, VOID *addr2, WORD flags )
{
   register LONG counter = length;
   VBYTE *sbyteptr = addr1, *dbyteptr = addr2;
   VWORD *swordptr = addr1, *dwordptr = addr2;
   VLONG *slongptr = addr1, *dlongptr = addr2;

	if ( !( (flags & ADDR1_SAME) || (flags & ADDR2_SAME) ) )
   	/* both addresses increment */
   	{
      switch( flags & SIZE_MASK )
      {
         case SIZE_BYTE:
            for( ; counter != 0; counter-- )
               *dbyteptr++ = *sbyteptr++;
            break;

         case SIZE_WORD:
            counter /= 2;
            for( ; counter != 0; counter-- )
               *dwordptr++ = *swordptr++;
            break;

         case SIZE_LONG:
            counter /= 4;
            for( ; counter != 0; counter-- )
               *dlongptr++ = *slongptr++;
            break;
      }

      return(1);
   }


   if ( (flags & ADDR1_SAME) && !(flags & ADDR2_SAME) )
   /* source does not increment */
   {
      switch( flags & SIZE_MASK )
      {
         case SIZE_BYTE:
            for( ; counter != 0; counter-- )
               *dbyteptr++ = *sbyteptr;
            break;

         case SIZE_WORD:
            counter /= 2;
            for( ; counter != 0; counter-- )
               *dwordptr++ = *swordptr;
            break;

         case SIZE_LONG:
            counter /= 4;
            for( ; counter != 0; counter-- )
               *dlongptr++ = *slongptr;
            break;
      }

      return(1);
   }

   if ( !(flags & ADDR1_SAME) && (flags & ADDR2_SAME) )
   /* destination does not increment */
   {
      switch( flags & SIZE_MASK )
      {
         case SIZE_BYTE:
            for( ; counter != 0; counter-- )
               *dbyteptr = *sbyteptr++;
            break;

         case SIZE_WORD:
            counter /= 2;
            for( ; counter != 0; counter-- )
               *dwordptr = *swordptr++;
            break;

         case SIZE_LONG:
            counter /= 4;
            for( ; counter != 0; counter-- )
               *dlongptr = *slongptr++;
            break;
      }

      return(1);
   }


   return(0);     /* unsupported call */
}


#pragma inline
/*asm P386 */
/* **************************************** */
/* DO NOT PUT ANYTHING AFTER HERE UNLESS 	*/
/* YOU WANT THE "INLINE" PRAGMA TO BE    	*/
/* USED FOR THESE FUNCTIONS TOO.       		*/
/* **************************************** */
/*
	The "pragma inline" is only used to force the use of
	TASM (Turbo assembler), because the built-in does
	not recognize the "eax" register.
*/


int physical_copy( LONG length, VUINT32 addr1, VUINT32 addr2, WORD flags )
/*
	Same as copy, but uses full 32-bit addresses.

   Copy addr1 -> addr2.
   see clib1.h for "flags".
      Flags supported:
         SIZE_xxxx
         ADDRx_SAME

   Entry:
   Exit:    <> if OK, else illegal call.
            Illegal call is if neither address increments.
*/

{

	x4gbinitialized = FALSE;

	switch( flags & SIZE_MASK )
    {
        case SIZE_WORD:	length &= 0xFFFFFFFEL;  break;
		case SIZE_LONG: length &= 0xFFFFFFFCL;  break;
	}	


   if ( !( (flags & ADDR1_SAME) || (flags & ADDR2_SAME) ) )
   /* both addresses increment */
   {
      switch( flags & SIZE_MASK )
      {
        case SIZE_BYTE:
		if( !x4gbinitialized )
			seg4gb();
		asm
		{
	mov     ebx, [addr1]
    mov     edx, [addr2]
	mov	    esi, [length]
move1:  
	mov     cl, gs:[ebx]
    add     ebx, 1
	mov		gs:[edx], cl
    add     edx, 1
    sub     esi, 1
    jnz     move1
		}
        break;

		case SIZE_WORD:
		if( !x4gbinitialized )
			seg4gb();
		asm
		{
	mov     ebx, [addr1]
    mov     edx, [addr2]
	mov	    esi, [length]
move2:  
	mov     cx, gs:[ebx]
    add     ebx, 2
	mov		gs:[edx], cx
    add     edx, 2
    sub     esi, 2
    jnz     move2
		}
        break;


        case SIZE_LONG:
		if( !x4gbinitialized )
			seg4gb();
		asm
		{
	mov     ebx, [addr1]
    mov     edx, [addr2]
	mov	    esi, [length]
move3:  
	mov     ecx, gs:[ebx]
    add     ebx, 4
	mov		gs:[edx], ecx
    add     edx, 4
    sub     esi, 4
    jnz     move3
		}
        break;

      }

      return(1);
   }


   if ( (flags & ADDR1_SAME) && !(flags & ADDR2_SAME) )
   /* source does not increment */
   {
      switch( flags & SIZE_MASK )
      {
        case SIZE_BYTE:
		if( !x4gbinitialized )
			seg4gb();
		asm
		{
	mov     ebx, [addr1]
    mov     edx, [addr2]
	mov	    esi, [length]
move4:  
	mov     cl, gs:[ebx]
	mov		gs:[edx], cl
    add     edx, 1
    sub     esi, 1
    jnz     move4
		}
        break;

        case SIZE_WORD:
		if( !x4gbinitialized )
			seg4gb();
		asm
		{
	mov     ebx, [addr1]
    mov     edx, [addr2]
	mov	    esi, [length]
move5:  
	mov     cx, gs:[ebx]
	mov		gs:[edx], cx
    add     edx, 2
    sub     esi, 2
    jnz     move5
		}
        break;

        case SIZE_LONG:
		if( !x4gbinitialized )
			seg4gb();
		asm
		{
	mov     ebx, [addr1]
    mov     edx, [addr2]
	mov	    esi, [length]
move6:  
	mov     ecx, gs:[ebx]
	mov		gs:[edx], ecx
    add     edx, 4
    sub     esi, 4
    jnz     move6
		}
        break;

      }

      return(1);
   }

   if ( !(flags & ADDR1_SAME) && (flags & ADDR2_SAME) )
   /* destination does not increment */
   {
      switch( flags & SIZE_MASK )
      {
        case SIZE_BYTE:
		if( !x4gbinitialized )
			seg4gb();
		asm
		{
	mov     ebx, [addr1]
    mov     edx, [addr2]
	mov	    esi, [length]
move7:  
	mov     cl, gs:[ebx]
    add     ebx, 1
	mov		gs:[edx], cl
    sub     esi, 1
    jnz     move7
		}
        break;

        case SIZE_WORD:
		if( !x4gbinitialized )
			seg4gb();
		asm
		{
	mov     ebx, [addr1]
    mov     edx, [addr2]
	mov	    esi, [length]
move8:  
	mov     cx, gs:[ebx]
    add     ebx, 2
	mov		gs:[edx], cx
    sub     esi, 2
    jnz     move8
		}
        break;

        case SIZE_LONG:
		if( !x4gbinitialized )
			seg4gb();
		asm
		{
	mov     ebx, [addr1]
    mov     edx, [addr2]
	mov	    esi, [length]
move9:  
	mov     ecx, gs:[ebx]
    add     ebx, 4
	mov		gs:[edx], ecx
    sub     esi, 4
    jnz     move9		
	    }
        break;

      }

      return(1);
   }


   return(0);     /* unsupported call */
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品女主播av| 欧美男生操女生| 国内精品伊人久久久久影院对白| 亚洲精品国产高清久久伦理二区| 国产精品久久久久影视| 中文字幕不卡的av| 国产精品你懂的| 亚洲三级免费电影| 一区二区高清在线| 亚洲第四色夜色| 丝袜诱惑亚洲看片| 国内偷窥港台综合视频在线播放| 国产在线精品一区二区三区不卡 | www.成人网.com| 国产成人av影院| 成人性生交大片免费看中文| 成人免费视频国产在线观看| 国产麻豆成人精品| 99麻豆久久久国产精品免费| 91官网在线观看| 欧美一级欧美三级在线观看| 精品剧情v国产在线观看在线| 久久你懂得1024| 亚洲视频香蕉人妖| 日日夜夜免费精品视频| 国产乱人伦精品一区二区在线观看| 国产成人丝袜美腿| 日本久久电影网| 日韩欧美一区二区在线视频| 国产欧美日韩亚州综合| 亚洲少妇中出一区| 日本 国产 欧美色综合| 国产精品一区二区三区99| 色94色欧美sute亚洲线路一久| 欧美日韩中文字幕一区二区| 欧美一级xxx| 中文字幕在线观看不卡| 五月天视频一区| 高清不卡在线观看| 欧美在线啊v一区| 久久天天做天天爱综合色| 亚洲女人小视频在线观看| 久久国产精品99精品国产| 成人avav影音| 日韩一二三区视频| 亚洲精品中文在线观看| 精品一区二区综合| 欧洲在线/亚洲| 国产亚洲视频系列| 美脚の诱脚舐め脚责91| 91免费在线播放| 国产三级一区二区| 久久国产剧场电影| 欧美日韩在线播放三区四区| 国产亚洲欧美中文| 久久99国产精品久久| 在线欧美一区二区| 亚洲视频在线观看一区| 国产乱色国产精品免费视频| 欧美剧情片在线观看| 亚洲图片欧美激情| 97se亚洲国产综合自在线| 久久综合久久鬼色中文字| 免费看黄色91| 欧美剧在线免费观看网站| 一区二区三区中文免费| 99这里都是精品| 国产欧美一区二区精品婷婷| 蜜桃av一区二区三区电影| 欧美日韩高清不卡| 亚洲国产精品一区二区www在线| 北条麻妃一区二区三区| 国产欧美一区二区精品忘忧草| 久久国产精品色| 欧美videossexotv100| 免费观看91视频大全| 3d动漫精品啪啪1区2区免费 | 热久久免费视频| 9191久久久久久久久久久| 亚洲永久精品国产| 欧日韩精品视频| 五月天网站亚洲| 日韩女优毛片在线| 国产aⅴ综合色| 国产农村妇女毛片精品久久麻豆 | 国产欧美一区视频| av在线综合网| 国产精品综合视频| 亚洲视频免费看| 日本韩国一区二区三区视频| 精品国产乱码久久久久久免费| 美美哒免费高清在线观看视频一区二区| 欧美色老头old∨ideo| 亚洲福利一区二区三区| 欧美日韩国产欧美日美国产精品| 午夜视频在线观看一区二区| 欧美精品v日韩精品v韩国精品v| 蜜桃精品在线观看| 欧美激情综合五月色丁香小说| av在线不卡观看免费观看| 亚洲成av人片一区二区| 欧美刺激午夜性久久久久久久| 精品一区二区三区在线播放视频| 日本一区二区在线不卡| 欧美最猛性xxxxx直播| 韩国毛片一区二区三区| 国产精品久久影院| 欧美日韩国产小视频在线观看| 欧美一区二区视频在线观看2020| 亚洲日本成人在线观看| 亚洲午夜精品网| av在线不卡网| 亚洲成人你懂的| 久久综合狠狠综合久久激情| 91在线精品一区二区三区| 调教+趴+乳夹+国产+精品| 久久精品一区蜜桃臀影院| 91丨porny丨最新| 老司机一区二区| 亚洲人成伊人成综合网小说| 日韩欧美电影在线| 91一区在线观看| 九色|91porny| 亚洲午夜免费电影| 日本一区二区免费在线观看视频| 欧美性xxxxxxxx| 成人久久视频在线观看| 精品制服美女丁香| 亚洲高清久久久| 亚洲日本乱码在线观看| 久久毛片高清国产| 91麻豆精品国产91久久久资源速度 | 91精品久久久久久久久99蜜臂 | 欧美激情综合在线| 日韩免费高清av| 欧美肥妇free| 欧美日韩精品三区| 色素色在线综合| 丁香六月久久综合狠狠色| 久久国产精品区| 奇米色777欧美一区二区| 一区二区欧美精品| 亚洲欧洲日韩在线| 中文字幕在线不卡视频| 国产日产精品一区| 久久综合国产精品| 精品美女一区二区三区| 日韩欧美亚洲一区二区| 欧美人牲a欧美精品| 欧美三级视频在线| 欧美在线免费观看亚洲| 亚洲精品在线电影| 欧美一区二区三区四区在线观看| 欧美性xxxxx极品少妇| 欧美日韩三级视频| 欧美亚州韩日在线看免费版国语版| 99久久伊人久久99| 色婷婷亚洲婷婷| 日本精品一区二区三区四区的功能| 成人一区在线观看| 91在线看国产| 欧美性受xxxx黑人xyx| 欧美乱熟臀69xxxxxx| 欧美一级电影网站| 国产人久久人人人人爽| 国产精品久久久久永久免费观看 | 精品视频全国免费看| 欧美日韩免费在线视频| 欧美日韩一级二级| 欧美一区二区三区不卡| 亚洲精品一区二区三区蜜桃下载| 2021中文字幕一区亚洲| 亚洲国产精品精华液2区45| 国产精品初高中害羞小美女文| 一区二区高清免费观看影视大全| 午夜精品久久一牛影视| 裸体一区二区三区| 粉嫩欧美一区二区三区高清影视| 99在线精品观看| 欧美日韩国产综合视频在线观看| 日韩一二三四区| 国产精品初高中害羞小美女文| 一区二区三区久久久| 久久99九九99精品| av亚洲精华国产精华精华| 欧美日韩亚洲丝袜制服| 精品国产乱码久久久久久免费| 中文无字幕一区二区三区| 亚洲精品国久久99热| 精品影视av免费| 欧美在线一二三四区| 精品盗摄一区二区三区| 一区二区三区四区激情| 黄页视频在线91| 日本韩国一区二区三区视频| 久久亚洲精品小早川怜子| 亚洲午夜一二三区视频| 懂色av一区二区在线播放| 91精品国产综合久久蜜臀| 国产精品黄色在线观看|