日本免费精品_最新日韩一区_亚洲视频一区在线_a在线视频观看_天天射夜夜骑_粉嫩av一区二区三区_欧美中日韩免费视频_综合图区欧美_国内精品美女在线观看_午夜精品久久久久久久男人的天堂

首頁 > 編程 > ASM > 正文

AT&T的匯編格式

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

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

★ 寄存器命名原則

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ù)長度標識

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

★尋址方式

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

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

下面是一些例子:

★直接尋址

AT&T: _booga ; _booga是一個全局的C變量

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

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)匯編很簡單,一般是按照下面的格式:
asm("statements");
例如:asm("nop"); asm("cli");

·asm 和 __asm__是完全一樣的.

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

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

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

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

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

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

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

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

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

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個value值.冒號后的語句指明輸入,輸出和被改變的寄存器.通過冒號以后的語句,編譯器就知道你的指令需要和改變哪些寄存器,從而可以優(yōu)化寄存器的分配.
其中符號"c"(count)指示要把count的值放入ecx寄存器


類似的還有:

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

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

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

幾點說明:

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

2.我們不必把編譯器分配的寄存器放入改變的寄存器列表,因為寄存器已經(jīng)記住了它們.

3."="是標示輸出寄存器,必須這樣用.

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

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

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

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

注重要使用兩個%,因為一個%的語法已經(jīng)被%n用掉了.

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


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

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

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

91精品无人成人www| 久久精品www| www.日韩免费| 伊人中文字幕在线观看| 欧美 日韩 中文字幕| 一区二区三区在线播放视频| 一区二区不卡在线| 黄色精品在线观看| 日韩一二三四区| 亚洲欧美中文字幕在线一区| 视频一区日韩| 一区二区日韩av| 亚洲小说春色综合另类网蜜桃| 免费国产h视频在线观看86| 日韩精品在线免费播放| 欧美高清一级片在线| 欧美日韩免费精品| 中文字幕在线国产| 国产欧美日韩综合| www.老鸭窝.com| 日韩视频在线免费播放| 天堂精品高清1区2区3区| 伊人永久在线| 国内精品99| 一本一道综合狠狠老| 亚洲视频日韩| 深夜福利亚洲| 国产视频97| 久久99久久久久| 91精品婷婷国产综合久久竹菊| 一区二区三区在线|网站| 日韩精品视频免费| 精品婷婷伊人一区三区三| 91精品国产91久久久久久青草| 久久久精品国产99久久精品芒果| 欧美日韩成人一区二区| 在线黄色国产电影| 欧美日韩精品是欧美日韩精品| 日本一级一片免费视频| aaa欧美日韩| 在线手机中文字幕| 日韩免费视频一区二区| 中文字幕视频在线观看| 日韩在线中文视频| 一区二区在线观看不卡| 欧美1234区| 91精品国产高清91久久久久久| 亚洲一区在线观看免费| 91久久久精品国产| 在线资源av| 午夜亚洲福利| 久久婷婷中文字幕| 欧美日韩中文国产| 国产资源中文字幕| 国产不卡一区二区在线观看| 国产欧美三级| 亚洲三级欧美| 樱花草www在线观看| 欧美va亚洲va日韩∨a综合色| 黄色一区二区视频| 中文字幕狠狠干| 精品欧美日韩精品| 97最新国自产拍视频在线完整在线看| 欧美国产日韩在线播放| 国产wwww| 在线观看免费国产小视频| 交视频在线观看国产| 国产成人精品免费久久久久| 黄色在线资源| 欧美日韩国产成人| 亚洲福利在线看| 精品一二线国产| 精品人妻一区二区免费视频| 中文字幕在线观看精品| 国产福利在线看| 欧美大片在线观看一区| 国产拍揄自揄精品视频麻豆| 国产在线观看精品| 91精品国产综合久久福利| 国产成人精品免费网站| 日韩国产在线不卡视频| 欧美国产综合在线V| 日韩视频一区二区在线观看| 欧美日韩一二三| 免费一级欧美在线观看视频| 日韩国产高清一区| 国产黄在线看| 久久精品久久精品国产大片| 欧美一级免费看| 欧美日韩国产中文| 国产最新在线| 在线亚洲人成| 欧美日韩在线播放三区四区| 麻豆精品视频入口| 亚洲最新永久观看在线| 成人福利一区| 中文字幕精品www乱入免费视频| 日韩精品 欧美| 亚洲视频日韩| 91精品免费看| 国产高清在线视频| 精品欧美日韩在线| 中文字幕国产视频| 日本中文字幕在线观看| 国产欧美久久久精品免费| 91麻豆精品国产91久久久使用方法 | lutube成人福利在线观看| 日韩欧美在线影院| 国产激情在线观看| 国产欧美在线观看| √天堂资源中文www| 久草视频观看| 国产欧美日韩亚州综合| 中文字幕在线视频日韩| 亚洲欧美韩国综合色| 午夜一区二区三区| 中文字幕五月天| 91精品在线看V| 天堂在线一区二区三区| 欧美日韩精品不卡| 亚洲一区中文字幕在线| 欧美日韩人人澡狠狠躁视频| 欧美日韩性视频一区二区三区| 日本不卡免费高清视频| 欧美日韩一二| 国产亚洲欧美色| 一级片在线播放| 欧美日韩国产首页| 黄色一区二区视频| 亚洲国产欧美日韩精品| 久久99蜜桃精品久久久久小说| 自拍日韩亚洲一区在线| 日韩在线视频精品| 中文字幕 日韩 欧美| 九七久久人人| 精品视频www| 91精品久久久久久久久久入口| 久久久精品免费免费| 国产一级片在线| 久久久久久欧美| 中文字幕在线观看视频www| 99综合视频| 亚洲开心激情| 中文字幕日韩免费视频| 日韩欧美一级在线| 亚洲一区中文字幕在线观看| 精品一区二区在线观看视频| 不卡av免费在线| 欧美专区中文字幕| av手机天堂| 中文字幕日韩高清| 日韩在线视频一区二区三区| 深夜福利一区| 欧美日韩不卡在线视频| 中文国产字幕在线观看| 婷婷精品进入| 日韩视频在线一区| 粉嫩喷白浆久久| 精品三级久久| 日韩三级高清在线| 91精品国产91久久久久久三级| 久久久精品欧美| 香蕉精品久久| 日韩亚洲欧美中文三级| 精品在线91| 亚洲福利在线看| 亚洲最大黄色| 精品国产欧美日韩不卡在线观看 | 欧美日韩国产一中文字不卡| 日韩中文字幕在线播放| 日韩中文字幕91| 精品视频三区| 91精品国产91久久久久久三级| 欧美日韩在线观看首页| 日韩精品在线网站| 亚洲免费观看在线观看| 精品人妻一区二区三区视频| 中文字幕久久av| 天堂在线视频中文网| 欧美日韩亚洲天堂| 91精品久久久久久久久| 国产v日产∨综合v精品视频| 91www成人久久| 国产在线观看色| 国产123在线| 欧美日韩中文字幕| 亚洲大片免费看| 久久久久久久久综合| 黄色一区二区视频| 国产资源中文字幕| 国产日韩精品久久久| 一区二区视频在线观看免费的| 日韩区欧美区| 中文亚洲欧美| 一本一道综合狠狠老| 日韩精品视频免费看| 日韩免费电影网站| 精品婷婷伊人一区三区三| 蜜臀91精品国产高清在线观看| 亚洲成av人片一区二区密柚| 亚洲国产无线乱码在线观看| 在线资源av| av中文天堂在线| 一区视频在线播放| 欧美变态tickling挠脚心| 精品日韩一区二区三区免费视频| 日韩亚洲不卡在线| 国产成人精品999在线观看| √新版天堂资源在线资源| 日韩中文欧美在线| 91精品国产自产观看在线| 国产免费一级片| 欧美日韩精品三区| 成人ww免费完整版在线观看| 中文字幕亚洲国产| 日韩影院二区| 午夜av一区二区| 国产第一页在线播放| 欧美一卡2卡3卡4卡| 精品1区2区3区| 亚洲欧洲日产国码av系列天堂| 欧美日韩精品综合| 国产福利精品导航| 在线精品日韩| 国产黄色在线观看| 激情五月综合| va中文字幕| 欧美亚洲免费高清在线观看| 国产永久在线观看| 日韩在线不卡| 亚洲社区在线| 一区二区不卡在线| 精品无人国产偷自产在线| 久久精品www| 一区二区在线观| 91精品国产自产观看在线| 婷婷综合福利| 在线日韩中文字幕| 日韩精品中文在线观看| 欧美日韩亚洲不卡| 成年人看的羞羞网站| 日韩在线视频免费观看高清中文| 中文字幕五月欧美| 国产一区在线精品| 午夜av一区二区| 色综合天天综合网国产成人综合天| 午夜亚洲一区| 亚洲国产午夜精品| 一本久久a久久精品亚洲| 国产一区二中文字幕在线看| 日韩免费电影网站| 国产69精品久久app免费版| 国产一级一片免费播放| 国产欧美第一页| 亚洲免费观看在线观看| 精品播放一区二区| a天堂中文在线官网在线| 久久99久久久久| 欧美日韩国产免费观看| 日韩在线视频一区| 亚洲影视资源网| 欧美日韩在线网站| 99精品视频国产| 在线视频不卡国产V| 色猫猫国产区一区二在线视频| 日韩欧美字幕| 日韩在线不卡| 欧美变态tickling挠脚心| 91精品国产综合久久精品app| 日韩中文首页| 亚洲综合日韩中文字幕v在线| 日韩欧美综合视频| 91精品国产色综合久久久蜜香臀| 国产一级片在线| 在线视频三区| 欧美在线视频第一页| 免费国产h视频在线观看86| 黄色片免费看| 亚洲深夜福利| 99国产成 人 综合 亚洲欧美| 中文官网资源新版中文第二页在线观看 | 中文字幕在线导航| 最近高清中文在线字幕在线观看1| 欧美三级中文字幕| 99国产一区| 黄色片免费看| 日韩国产一区三区| 国产久卡久卡久卡久卡视频精品| 日韩不卡一区二区| 91精品国产91久久久久久三级| 亚洲三级国产| 91吃瓜在线观看| av中文在线播放| 亚洲欧美中文字幕| 亚洲免费在线观看av| 国产欧美高清在线| 精品在线一区二区| 91精品国产综合久久福利 | 日韩精品资源二区在线| 午夜成人鲁丝片午夜精品| 欧美日韩三级一区| 欧美在线观看视频一区| 日韩在线 中文字幕| 视频一区二区国产| 中文字幕欧美国内| www.狠狠| 日本亚洲欧美三级| 99在线精品视频免费观看20| 亚洲免费观看视频| 亚洲综合在线小说| 亚洲中文字幕一区| 中文字幕亚洲乱码| 国产在线第一页| 91精品国产自产观看在线| 国产免费久久久| 国产欧美日韩精品在线| 久久婷婷亚洲| 久久精品电影| 日韩欧美成人一区二区三区| 精品视频1区2区3区| 日本精品免费观看高清观看| 国产成人一区二区精品非洲| 在线精品观看| 在线综合 亚洲 欧美中文字幕| a√免费观看在线网址www| 日韩欧美综合视频| 久久99精品久久久久子伦| 91精品观看| 日韩国产欧美亚洲| 91精品国产自产在线丝袜啪| 日韩在线 中文字幕| 国产对白在线| 一区三区视频| 日韩欧美成人一区二区三区| 欧美日韩精品在线视频| 亚洲第一页中文字幕| 日韩av综合在线观看| 亚洲小说春色综合另类电影| 在线视频色在线| 国产福利在线播放| 精品三级在线| 欧美日韩在线第一页| 国产 欧美 在线| 欧洲一级精品| 99久久久精品免费观看国产 | 欧美日韩在线播放三区四区| 中文字幕在线精品| 国产在线黄色| 中文字幕亚洲在| 91www成人久久| 欧美日韩国产大片| 亚洲精品欧美二区三区中文字幕 | 顶级网黄在线播放| 国产午夜精品视频| 亚洲二区自拍| 亚洲成在线观看| 在线观看一区| 亚洲欧美久久久| 日韩欧美中文第一页| 国产91欧美| av三级在线播放| 玖玖在线免费视频| 天天综合天天添夜夜添狠狠添| 91精品国产综合久久久久久| 亚洲欧美日本另类| 亚洲制服一区| 久久久99精品久久| 久久久综合精品| 亚洲综合欧美在线| 国产欧美日韩综合| 欧美日韩国产页| 日韩一级免费在线观看| 精品熟女一区二区三区| 国产高清在线观看| 91精品国产综合久久精品| 亚洲狠狠婷婷综合久久久久图片| 久久手机免费观看| 国产福利一区在线观看| 精品熟女一区二区三区| 日韩欧美中文| 日韩高清在线不卡| 欧美色视频一区二区三区在线观看| 中文字幕久久av| 91精品国产综合久久久久久漫画| 亚洲美女视频一区| 日韩精品一级| 在线日韩中文| 久久香蕉一区| 国产婷婷一区二区| 日韩欧美在线字幕| 日韩视频一区| 欧美日韩精品欧美日韩精品| 成人a在线观看| 日韩www在线| 欧美日韩国产页| av免费观看国产| 欧美中日韩在线| 日韩精品首页| 免费看日韩精品| 不卡在线视频|