日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

C指针原理(6)-C内嵌汇编

發布時間:2025/3/12 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C指针原理(6)-C内嵌汇编 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

內聯匯編的重要性體現在它能夠靈活操作,而且可以使其輸出通過 C 變量顯示出來。因為它具有這種能力,所以 “asm” 可以用作匯編指令和包含它的 C 程序之間的接口。簡單得說,內聯匯編,就是可以讓程序員在C語言中直接嵌入匯編代碼,并與匯編代碼交互C程序中的C表達式,享受匯編的高運行效率。

內聯匯編的格式是直接在C代碼中插入以下格式:
asm(


)
其中的"…“為匯編代碼,比如下面例子中,在 result=a*b和printf(”%d\n",result)之間插入一段匯編,

下面的這段匯編什么都不做,每個nop指令占用一個指令的執行時間result=a*b;asm("nop\n\t""nop\n\t""nop\n\t""nop");//4個nop指令,\n\t表示換行,然后加上TAB行首空,因為每個匯編指令必須在單獨一行,需要換行,加上制表符是為了適應某些編譯器的要求。 printf("%d\n",result);

可以很明顯地看到:

匯編代碼之間用“\n\t”間隔,并且每條匯編代碼單獨占用一行,共有4個nop指令,每個指令后的“\n\t”表示換行,然后加上TAB行首空,因為每個匯編指令必須在單獨一行,需要換行,加上制表符是為了適應某些編譯器的要求。

下面是一個完整的例子,內嵌的匯編完成對2個C程序定義的全局變量c和d的相加,并將相加結果存入全局變量addresult中:

#include <stdio.h> int c=10; int d=20; int addresult; int main(void){int a=6;int b=2;int result;result=a*b;asm("nop\n\t""nop\n\t""nop\n\t""nop");//4個nop指令,\n\t表示換行,然后加上TAB行首空,因為每個匯編指令必須在單獨一行,需要換行,加上制表符是為了適應某些編譯器的要求。 printf("%d\n",result);asm("pusha\n\t""movl c,%eax\n\t""movl d,%ebx\n\t""add %ebx,%eax\n\t""movl %eax, addresult\n\t""popa");//使用全局C變量c和d printf("%d\n",addresult); return 0; }

編譯上述代碼

$ gcc -o test test.c
$ ./test
12
30
在匯編代碼中可以直接使用變量名稱操作C程序定義的全局變量,比如c、d和addresult就是全局變量:

“movl c,%eax\n\t”
“movl d,%ebx\n\t”
“movl %eax, addresult\n\t”

內聯匯編部分如果不需要編譯器優化( 優化可能破壞匯編代碼的內部結構,因為匯編代碼直接操作寄存器,而寄存器使用優化是編譯器提供的功能), 可以在 “asm” 后使用關鍵字 “volatile”。

asm volatile(

)
如果程序必須與 ANSI C 兼容,則應該使用 asm 和 volatile。

__asm__ __volatile__(..................) 下面的代碼和剛才代碼功能一樣,唯一的區別是不需要優化#include <stdio.h> int c=10; int d=20; int addresult; int main(void){int a=6;int b=2;int result;result=a*b;//ansi c標準的asm有其它用,所以用__asm__,__volatile__表示內聯匯編部分不用優化(可以用volatile,但是ansi c不行),以防優化破壞內聯代碼組織結構__asm__ __volatile__("nop\n\t""nop\n\t""nop\n\t""nop");//4個nop指令,\n\t表示換行,然后加上TAB行首空,因為每個匯編指令必須在單獨一行,需要換行,加上制表符是為了適應某些編譯器的要求。 printf("%d\n",result);__asm__ __volatile__("pusha\n\t""movl c,%eax\n\t""movl d,%ebx\n\t""add %ebx,%eax\n\t""movl %eax, addresult\n\t""popa");//使用全局C變量c和d printf("%d\n",addresult); return 0; }

總結

以上是生活随笔為你收集整理的C指针原理(6)-C内嵌汇编的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 黄色在线免费观看网站 | 免费看欧美成人a片无码 | 欧美激情久久久久久 | 蜜桃香蕉视频 | 国产免费三片 | 亚洲精品在线免费播放 | 国产特级淫片免费看 | 成年人看的黄色 | 成人免费看片39 | 这里只有精品视频 | 亚洲搞av | 日本成人免费观看 | 国产成人精品999在线观看 | av免费网| 果冻av在线 | 麻豆com | 久久午夜场 | 欧美污视频在线观看 | 国产玖玖在线 | 国产伊人久久 | 波多野结衣免费看 | 亚洲资源在线观看 | 你懂的网站在线 | 麻豆精品在线看 | 极品国产91在线网站 | 国产精品区一区二区三 | 青青导航 | 美国爱爱视频 | 日本学生初尝黑人巨免费视频 | 欧美黄色精品 | 91免费观看网站 | 欧美成年人在线视频 | 爽妇网国产精品 | 九七在线视频 | 亚洲精品乱码久久久久久写真 | 国产麻豆剧果冻传媒白晶晶 | 韩国国产在线 | 激情啪啪网 | 乱xxxxx普通话对白 | 九九热精品视频在线 | 在线观看国产视频 | 日本三级黄在线观看 | 一区二区三区日韩在线 | 天堂中文网在线 | 丁香花完整视频在线观看 | 国产精品成人无码专区 | 精品人妻无码一区二区三区蜜桃一 | 网站免费在线观看 | 午夜av片 | 与子敌伦刺激对白播放的优点 | av男人的天堂网 | 日韩精品中文字幕一区二区三区 | 成人性生交大片免费看96 | 毛片在线免费播放 | 91成人在线免费视频 | 爱爱爱网| 日韩精品第一区 | 污视频在线观看网址 | 亚洲精品国产免费 | 人妻av无码一区二区三区 | 91涩涩视频 | 羽月希奶水一区二区三区 | 日本www在线 | 欧美黄片一区 | 骚虎视频在线观看 | 亚洲高清在线一区 | 中文字幕一区二区三区四区 | 欧美性综合| 久久亚洲AV成人无码国产人妖 | 日韩成人av在线 | 久久av一区二区 | 亚欧洲精品视频 | 99久久久无码国产精品性青椒 | 熟女毛毛多熟妇人妻aⅴ在线毛片 | 韩国三级中文字幕hd浴缸戏 | 日韩毛片一区二区三区 | 国产精品久久在线 | 久久久免费观看视频 | 成人片在线免费看 | 自拍偷拍第 | 国产精品入口 | 国产夫妻久久 | 日本激情电影 | 国产美女操 | 午夜精品久久久久久久91蜜桃 | 国产精品一区二区入口九绯色 | 桃色成人网 | 性感美女被草 | 男生草女生视频 | 超碰凹凸 | 日韩欧美中文字幕一区 | 性农村xxxxx小树林 | 国产亚洲精品成人av在线 | 国产ts在线 | 五月婷婷影院 | 亚洲综合色网 | 日本一区二区成人 | 狂野欧美性猛交xxxx | 日韩激情文学 |