亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > ASM > 正文

AT&T的匯編格式

2019-11-17 05:14:30
字體:
供稿:網(wǎng)友

  一 基本語法
語法上主要有以下幾個(gè)不同.

★ 寄存器命名原則

AT&T: %eax Intel: eax

★源/目的操作數(shù)順序

AT&T: movl %eax,%ebx Intel: mov ebx,eax

★常數(shù)/立即數(shù)的格式

AT&T: movl $_value,%ebx Intel: mov eax,_value
把_value的地址放入eax寄存器

AT&T: movl $0xd00d,%ebx Intel: mov ebx,0xd00d

★ 操作數(shù)長(zhǎng)度標(biāo)識(shí)

AT&T: movw %ax,%bx Intel: mov bx,ax

★尋址方式

AT&T: immed32(basepointer,indeXPointer,indexscale)
Intel: [basepointer + indexpointer*indexscale + imm32)

linux工作于保護(hù)模式下,用的是32位線性地址,所以在計(jì)算地址時(shí)不用考慮segment:offset的問題.上式中的地址應(yīng)為:
imm32 + basepointer + indexpointer*indexscale

下面是一些例子:

★直接尋址

AT&T: _booga ; _booga是一個(gè)全局的C變量

注重加上$是表示地址引用,不加是表示值引用.
注:對(duì)于局部變量,可以通過堆棧指針引用.

Intel: [_booga]

★寄存器間接尋址

AT&T: (%eax)
Intel: [eax]

★變址尋址

AT&T: _variable(%eax)
Intel: [eax + _variable]

AT&T: _array(,%eax,4)
Intel: [eax*4 + _array]

AT&T: _array(%ebx,%eax,icon_cool.gif
Intel: [ebx + eax*8 + _array]

二 基本的行內(nèi)匯編

·基本的行內(nèi)匯編很簡(jiǎn)單,一般是按照下面的格式:
asm("statements");
例如:asm("nop"); asm("cli");

·asm 和 __asm__是完全一樣的.

·假如有多行匯編,則每一行都要加上 "
"
例如:

asm( "pushl %eax
"
"movl $0,%eax
"
"popl %eax");

實(shí)際上gcc在處理匯編時(shí),是要把a(bǔ)sm(...)的內(nèi)容"打印"到匯編文件中,所以格式控制字符是必要的.

再例如:
asm("movl %eax,%ebx");
asm("xorl %ebx,%edx");
asm("movl $0,_booga);

在上面的例子中,由于我們?cè)谛袃?nèi)匯編中改變了edx和ebx的值,但是由于gcc的非凡的處理方法,即先形成匯編文件,再交給GAS去匯編,所以GAS并不知道我們已經(jīng)改變了edx和ebx的值,假如程序的上下文需要edx或ebx作暫存,這樣就會(huì)引起嚴(yán)重的后果.對(duì)于變量_booga也存在一樣的問題.為了解決這個(gè)問題,就要用到擴(kuò)展的行內(nèi)匯編語法.

三 擴(kuò)展的行內(nèi)匯編

擴(kuò)展的行內(nèi)匯編類似于Watcom.

基本的格式是:
asm ( "statements" : output_regs : input_regs : clobbered_regs);
clobbered_regs指的是被改變的寄存器.

下面是一個(gè)例子(為方便起見,我使用全局變量):

int count=1;
int value=1;
int buf[10];
void main()
{
asm(
"cld
"
"rep
"
"stosl"
:
: "c" (count), "a" (value) , "D" (buf[0])
: "%ecx","%edi" );
}

得到的主要匯編代碼為:

movl count,%ecx
movl value,%eax
movl buf,%edi
#APP
cld
rep
stosl
#NO_APP

cld,rep,stos就不用多解釋了.這幾條語句的功能是向buf中寫上count個(gè)value值.冒號(hào)后的語句指明輸入,輸出和被改變的寄存器.通過冒號(hào)以后的語句,編譯器就知道你的指令需要和改變哪些寄存器,從而可以優(yōu)化寄存器的分配.
其中符號(hào)"c"(count)指示要把count的值放入ecx寄存器


類似的還有:

a eax
b ebx
c ecx
d edx
S esi
D edi
I 常數(shù)值,(0 - 31)
q,r 動(dòng)態(tài)分配的寄存器
g eax,ebx,ecx,edx或內(nèi)存變量
A 把eax和edx合成一個(gè)64位的寄存器(use long longs)

我們也可以讓gcc自己選擇合適的寄存器.
如下面的例子:
asm("leal (%1,%1,4),%0"
: "=r" (x)
: "0" (x) );

這段代碼實(shí)現(xiàn)5*x的快速乘法.
得到的主要匯編代碼為:
movl x,%eax
#APP
leal (%eax,%eax,4),%eax
#NO_APP
movl %eax,x

幾點(diǎn)說明:

1.使用q指示編譯器從eax,ebx,ecx,edx分配寄存器.使用r指示編譯器從eax,ebx,ecx,edx,esi,edi分配寄存器.

2.我們不必把編譯器分配的寄存器放入改變的寄存器列表,因?yàn)榧拇嫫饕呀?jīng)記住了它們.

3."="是標(biāo)示輸出寄存器,必須這樣用.

4.數(shù)字%n的用法:

數(shù)字表示的寄存器是按照出現(xiàn)和從左到右的順序映射到用"r"或"q"請(qǐng)求的寄存器.假如我們要重用"r"或"q"請(qǐng)求的寄存器的話,就可以使用它們.

5.假如強(qiáng)制使用固定的寄存器的話,如不用%1,而用ebx,則asm("leal (%%ebx,%%ebx,4),%0"

: "=r" (x)
: "0" (x) );

注重要使用兩個(gè)%,因?yàn)橐粋€(gè)%的語法已經(jīng)被%n用掉了.

下面可以來解釋letter 4854-4855的問題:


1、變量加下劃線和雙下劃線有什么非凡含義嗎?
加下劃線是指全局變量,但我的gcc中加不加都無所謂.

2、以上定義用如下調(diào)用時(shí)展開會(huì)是什么意思?
#define _syscall1(type,name,type1,arg1)
type name(type1 arg1)
{
long __res;
/* __res應(yīng)該是一個(gè)全局變量 */
__asm__ volatile ("int $0x80"
/* volatile 的意思是不答應(yīng)優(yōu)化,使編譯器嚴(yán)格按照你的匯編代碼匯編*/
: "=a" (__res)
/* 產(chǎn)生代碼 movl %eax, __res */
: "0" (__NR_##name),"b" ((long)(arg1)));
/* 假如我沒記錯(cuò)的話,這里##指的是兩次宏展開.
  即用實(shí)際的系統(tǒng)調(diào)用名字代替"name",然后再把__NR_...展開.
  接著把展開的常數(shù)放入eax,把a(bǔ)rg1放入ebx */
if (__res >= 0)
return (type) __res;
errno = -__res;
return -1;
}
[目錄]

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

婷婷激情5月天| 亚洲国产成人无码av在线| 日韩精品综合一本久道在线视频| 国产农村av| 天堂中文字幕在线观看| 最新欧美色图| 精品呦交小u女在线| 国产视频手机在线观看| 91久久精品一区| 最好看的日本字幕mv视频大全| 中文成人在线| 9i看片成人免费看片| 99久免费精品视频在线观看| 九色视频成人自拍| 日韩欧美在线视频日韩欧美在线视频| 午夜精品久久久| 麻豆免费精品视频| 无码人妻aⅴ一区二区三区玉蒲团| 日本精品一二区| 欧一区二区三区| 97超碰最新| av色综合久久天堂av色综合在| 夜夜夜夜夜夜操| 激情一区二区三区| 九色成人在线| 成人h动漫精品一区| 综合久久2023| 日本三级电影网| 国产成人鲁鲁免费视频a| 欧美老女人第四色| 亚洲高清av一区二区三区| 999国产精品视频免费| 欧美日韩一区三区四区| 国产精品jk白丝蜜臀av小说| 亚洲三级网址| 免费在线观看日韩av| 国产精品一区二区精品视频观看| 亚洲一区二三区| 欧美日韩黄网站| 国产福利精品在线| 揄拍成人国产精品视频| 三级网在线观看| 国产黄色免费在线观看| 久久久精品美女| 九色porny91| 正在播放日韩欧美一页| 欧美黑人粗大| 57pao成人永久免费| 你懂得视频在线观看| 精品丝袜一区二区三区| 日本一区午夜艳熟免费| 乱妇乱女熟妇熟女网站| 日本免费一区二区六区| 欧美9999| 成人性生活视频| 国产在线天堂www网在线观看| 你懂的一区二区| 51蜜桃传媒精品一区二区| 欧美一级大黄| av中文字幕一区二区三区| 日韩亚洲国产中文字幕| 视频一区二区精品的福利| 99久久久精品免费观看国产蜜| 男人网站在线观看| 青椒成人免费视频| 国产在线资源| 午夜在线a亚洲v天堂网2018| 国产精品久久久久影院老司| 日本不卡不卡| 九色porny自拍| 精品国产一区探花在线观看| 韩国成人二区| 五月久久久综合一区二区小说| 亚洲国产综合视频| 日本特级黄色片| 91久久精品一区二区三区| 黄色片视频在线播放| 99精品视频播放| 激情亚洲色图| 欧美国产大片| 国产精品麻豆视频| 国产69精品久久| 最新高清无码专区| 97婷婷涩涩精品一区| 天堂久久午夜av| 亚洲一级爰片777777| 91美女片黄在线观看91美女| 69堂免费视频| 999久久久久久久久6666| 欧美一区二区三区性视频| 国产午夜精品美女毛片视频| 国产精品久久久久久久美男| 国产精品99久久免费| 中文字幕日韩欧美一区二区三区| www.av在线| 久久激情综合网| 久久久精品动漫| 国产精品99在线观看| 精品国产美女a久久9999| 人妻妺妺窝人体色www聚色窝| 在线精品高清中文字幕| 欧美激情免费看| 亚洲承认视频| 日韩一本大道| 色系列之999| 国产成人三级在线观看视频| 亚洲国产欧美久久| 日韩在线视频导航| 在线免费观看污| 少妇高潮av久久久久久| www.日韩在线观看| 国产卡一卡2卡三卡免费视频| 国产精品视频一区二区在线观看| 国产福利片在线观看| 国产福利在线观看| 黑森林国产精品av| 青青草原国产在线| 中文文字幕文字幕高清| 久久裸体视频| 日韩一级av毛片| 亚洲高清不卡在线观看| 午夜视频在线| 潘金莲一级淫片aaaaa| 久久五月天色综合| 爱啪导航一精品导航站| 91精品啪在线观看国产18| 漂亮人妻被黑人久久精品| 婷婷在线免费视频| 这里只有精品在线观看| 天天操天天操天天操| 奇米影视狠狠狠| 国产免费一区| 欧美精品在线一区二区| 色综合视频网站| 黄色片视频在线| 黄页网站在线观看| 欧美一区二粉嫩精品国产一线天| 成人在线视频区| 少妇精69xxtheporn| 99久久精品国产导航| 极品白嫩少妇无套内谢| 久久久午夜精品| 色先锋资源久久综合5566| 国产天堂av在线| 国内外成人免费视频| 艳妇乳肉豪妇荡乳av无码福利| 亚洲免费毛片| 日韩精品电影一区二区三区| 日韩精品无码一区二区三区免费| 1314成人网| 国产一区二区三区视频在线| 中文av一区二区| 成人天堂噜噜噜| 免费欧美在线| 亚洲国产成人在线| 国产一区二区不卡老阿姨| 一级黄色在线视频| 一级毛片在线| h片视频在线观看| 性欧美.com| 欧洲中文在线| 精精国产xxxx视频在线播放| 久久人妻无码一区二区| av在线加勒比| 日本三级一区| 一区二区自拍偷拍| 亚洲一区二区三区四区在线| 国产一区二区视频免费在线观看| 麻豆传媒在线免费| 久久99热狠狠色一区二区| 国产免费一区二区三区最新6| 精品一区二区三区在线| 中文字幕久精品免| 日日夜夜精品免费视频| 久久成人av少妇免费| 久久久噜噜噜久久中文字幕色伊伊| 欧美日韩亚洲高清一区二区| 成人午夜在线视频一区| 日韩一区二区三区电影在线观看| 国产免费一区二区三区免费视频| 国产a级网站| 国产 中文 字幕 日韩 在线| 国产剧情在线观看一区二区| 亚洲在线观看视频| 日本黄色免费| 亚洲77777| 免费观看亚洲| 国产午夜精品理论片a级探花| 99精品国产九九国产精品| 日韩精品中文字幕有码专区| 免费在线观看一级毛片| 九七影院97影院理论片免费| 国产欧美va欧美不卡在线| 久热中文在线| 黄色av网站在线免费观看| 欧美黑人3p| 国产精品久久网站| 国产综合视频一区二区三区免费| 成人写真视频| 国产无码精品视频| 手机在线国产视频| 少妇性饥渴无码a区免费| 中文字幕在线第一页| 久热国产在线视频| 国产成人综合一区二区三区| 国精品日韩欧美一区二区三区| 国产精品久久久久久久免费大片| 欧美一级淫片aaaaaa| 中国美女黄色一级片| 精品久久国产一区| 免费黄色片在线观看| 天堂av网手机版| 伊人久久大香线蕉综合网蜜芽| 卡一卡2卡三精品| 菠萝蜜网站在线观看| aaa级精品久久久国产片| 欧美成人一区二区三区电影| 9191在线观看| 制服诱惑一区| 97久久夜色精品国产九色| 国产亚洲成aⅴ人片在线观看| av在线天堂网| 亚洲一区电影在线观看| 国产99久久久国产精品潘金| 国产精品久久久久久一区二区| 黄色小视频免费观看| 久久成人免费观看| 欧美人狂配大交3d怪物一区| 香蕉视频黄在线观看| 丝袜亚洲另类欧美重口| 久久久久免费看黄a片app| 亚洲精品国产成人av在线| 亚洲 欧美 综合 另类 中字| 日韩欧美国产麻豆| 亚洲va国产日韩欧美精品色婷婷| 北条麻妃高清一区| 91popny丨九色丨国产| 久久久成人精品| 秋霞午夜av一区二区三区| 夜夜嗨av一区二区三区四季av| 激情五月六月婷婷| 四虎永久免费在线| 欧美精品国产精品日韩精品| 娇妻高潮浓精白浆xxⅹ| 蜜桃视频在线观看成人| 亚洲综合久久网| 国产视频三区| 久久99久久精品欧美| 欧美一级手机免费观看片| 亚洲黄色片在线观看| 久久精品一区二区三区不卡牛牛| y4480在线8影院| 欧美在线观看www| 亚洲国产精品一区二区www在线| 成人午夜又粗又硬又大| 午夜免费一区二区| 岛国大片在线播放| 色婷婷激情久久| 欧美日韩午夜剧场| 欧美日韩电影一区| 中文日韩在线视频| 国产一区91精品张津瑜| 成人影院av| 欧美美女bb生活片| 天堂在线精品| 欧美伊人久久久久久午夜久久久久| 精品久久久久久久久久久久久久久| 国产日韩欧美一区二区三区四区| 一二三中文字幕在线| 午夜欧美大片免费观看| 欧美日韩电影一区二区| 激情丁香综合五月| 国产在线视频自拍| 日韩精品一区不卡| 日本一本草久在线中文| 青青草免费在线视频| 少妇久久久久久| 免费av不卡| 午夜视频在线网站| 麻豆理论在线观看| 欧美麻豆久久久久久中文| 亚洲精品成人精品456| 亚洲精品国产九九九| 一本一本久久a久久综合精品蜜桃| 538国产精品视频一区二区| 国产很黄免费观看久久| eeuss影院18直达| 国产福利三区| 欧美野外猛男的大粗鳮| 国内精品一区二区三区| 综合久久一区| 78m国产成人精品视频| 一区不卡在线观看| 欧美一区二区三区影院| 国产999精品久久久影片官网| 欧美成人免费在线| 99热这里只有精品首页| 精品国产乱码一区二区三区| 人人玩人人添人人澡免费| 一区二区精品在线| 一区二区三区视频| 看全色黄大色黄女片18| 水莓100国产免费av在线播放| 国产调教一区二区三区| 欧美男女爱爱视频| 欧美精品一区二区三区免费| 麻豆tv在线播放| 国产成人羞羞电影网站在线观看| 成人女保姆的销魂服务| 日韩在线一区二区视频| 日本www在线视频| 精品96久久久久久中文字幕无| 免费一级欧美片在线播放| 精品久久久久久亚洲综合网站| 久久亚洲综合色一区二区三区| 亚洲不卡免费视频| 国产大学生校花援交在线播放| 久久伊人蜜桃av一区二区| 国产一区二区免费在线| 亚洲黄色小说在线观看| 久久7799| 国产一二三四在线视频| 精品少妇人妻av免费久久洗澡| 美女被人操视频在线观看| www.欧美日韩国产在线| 中文字幕中文字幕精品| 国内成+人亚洲+欧美+综合在线| 国产福利精品导航|