匯編筆記

## 前言

最近在看一些關(guān)于linux startup的東西,對(duì)于其中使用到的AT&T的匯編語法有點(diǎn)陌生揩尸,所以寫下這篇文章來幫助自己和更多的人了解一些常見的AT&T匯編的語法所禀。

因?yàn)橹翱催^一段時(shí)間的匯編語法方面,所以并不會(huì)對(duì)其中的語法有過多的深入(主要是自己學(xué)的還不夠好放钦,大大的羞愧),僅針對(duì)自己感興趣的方面葡幸,如果有同學(xué)對(duì)其中的部分感興趣或者想給予擴(kuò)充最筒,非常歡迎!(你問我支不支持蔚叨,我是支持滴床蜘!)

## 學(xué)習(xí)環(huán)境

因?yàn)樽约浩綍r(shí)主要是使用Mac進(jìn)行編程,所以文章中如果出現(xiàn)部分示例蔑水,僅僅確保在Mac的環(huán)境中能夠正常運(yùn)行(周知~)邢锯。如果有熱心的同學(xué)能夠?qū)Σ煌沫h(huán)境下的運(yùn)行結(jié)果進(jìn)行反饋,也是歡迎的(我是認(rèn)真的~)搀别。

## 匯編常用的語法

### section directive

1. data section

用來聲明程序中用來存儲(chǔ)數(shù)據(jù)的內(nèi)存區(qū)域丹擎;這個(gè)區(qū)域在聲明之后不能被擴(kuò)充,在程序中全局為static歇父。

2. bss section

bss也是靜態(tài)內(nèi)存區(qū)域蒂培,包含在程序中定義的數(shù)據(jù)緩沖,這段內(nèi)存區(qū)域的獨(dú)特之處是使用了0進(jìn)行填充榜苫。

3. text section

這段內(nèi)存區(qū)域用來存儲(chǔ)指令代碼护戳,這段區(qū)域是固定的。

### register

1. EAX

累加器垂睬,用來進(jìn)行加法運(yùn)算媳荒,存儲(chǔ)結(jié)果。

2. EBX

指向數(shù)據(jù)內(nèi)存區(qū)域中的數(shù)據(jù)指針驹饺。

3. ECX

string和循環(huán)操作的計(jì)數(shù)器钳枕。

4. EDX

I/O指針。

5. EDI

指向string操作目的地址的數(shù)據(jù)指針赏壹。

6. ESI

指向string操作源地址的數(shù)據(jù)指針鱼炒。

7. ESP

棧指針。

8. EBP

棧數(shù)據(jù)指針蝌借。

### segment registers

1. CS

代碼段田柔,CS寄存器中包含了指向內(nèi)存中代碼段的指針,代碼段是內(nèi)存中指令代碼存儲(chǔ)的地方骨望。處理器基于CS寄存器的值從內(nèi)存中獲取指令代碼硬爆,而相關(guān)的偏移量則存儲(chǔ)在EIP指令指針寄存器當(dāng)中。

2. DS

數(shù)據(jù)段擎鸠,DS缀磕、ES、FS、GS均指向數(shù)據(jù)段袜蚕。使用這4種不同的數(shù)據(jù)段糟把,可以幫助程序分離不同的數(shù)據(jù)對(duì)象,使得他們直接沒有交集牲剃。

3. SS

堆棧段遣疯,SS寄存器當(dāng)中包含了指向內(nèi)存中堆棧段的指針。棧中包含了程序中傳遞給函數(shù)的數(shù)據(jù)凿傅。

4. ES

5. FS

6. GS

### instruction pointer register

Instruction pointer register(EIP, 指令指針寄存器)有時(shí)也被稱之為程序計(jì)數(shù)器缠犀,指向下一個(gè)要被執(zhí)行的指令代碼。通常情況下聪舒,不能直接去修改EIP中的值辨液,可以通過jump等指令的方式間接的修改EIP中的值,并將下一個(gè)指令代碼進(jìn)行cache箱残。

### control register

Control register在x86系列中包含CR0-7滔迈,在x86_64中則額外增加了EFER、CR8這兩個(gè)控制寄存器被辑。通過控制寄存器燎悍,可以決定處理器的操作模式、當(dāng)前執(zhí)行任務(wù)的特性等盼理。

在通常情況下谈山,不能夠直接獲取到控制寄存器的數(shù)值。需要將控制寄存器的數(shù)值轉(zhuǎn)到通用寄存器當(dāng)中榜揖,才能獲取到勾哩;如果希望對(duì)控制寄存器進(jìn)行賦值抗蠢,則需要將數(shù)值轉(zhuǎn)移到通用寄存器當(dāng)中举哟,然后將通用寄存器的值賦給控制寄存器。

### flags

通過flag來表明一個(gè)程序是否被正確執(zhí)行了迅矛。

按照功能妨猩,flag被分為以下幾種:

1. Status flags

被用來標(biāo)識(shí)算數(shù)操作的結(jié)果。

|flag? ? ? |bit? ? ? ? |name? ? ? ? ? ? |describe|

| -------------|:--------------:|:--------------:|:--------------:|

|CF|0|Carry flag|在算術(shù)運(yùn)算中秽褒,數(shù)字溢出時(shí)使用|

|PF|2|Parity flag|奇偶校驗(yàn)符|

|AF|4|Adjust flag|類似于十進(jìn)制加減法壶硅,在進(jìn)位或者借位的時(shí)候使用|

|ZF|6|Zero flag|當(dāng)一個(gè)操作的結(jié)果為0時(shí),此標(biāo)識(shí)位置為1|

|SF|7|Sign flag||

2. Control flags

3. System flags

## 未完待續(xù)~~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末销斟,一起剝皮案震驚了整個(gè)濱河市庐椒,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌蚂踊,老刑警劉巖约谈,帶你破解...
    沈念sama閱讀 222,865評(píng)論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡棱诱,警方通過查閱死者的電腦和手機(jī)泼橘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,296評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來迈勋,“玉大人炬灭,你說我怎么就攤上這事∶夜剑” “怎么了重归?”我有些...
    開封第一講書人閱讀 169,631評(píng)論 0 364
  • 文/不壞的土叔 我叫張陵,是天一觀的道長镰官。 經(jīng)常有香客問我提前,道長,這世上最難降的妖魔是什么泳唠? 我笑而不...
    開封第一講書人閱讀 60,199評(píng)論 1 300
  • 正文 為了忘掉前任狈网,我火速辦了婚禮,結(jié)果婚禮上笨腥,老公的妹妹穿的比我還像新娘拓哺。我一直安慰自己,他們只是感情好脖母,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,196評(píng)論 6 398
  • 文/花漫 我一把揭開白布士鸥。 她就那樣靜靜地躺著,像睡著了一般谆级。 火紅的嫁衣襯著肌膚如雪烤礁。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,793評(píng)論 1 314
  • 那天肥照,我揣著相機(jī)與錄音脚仔,去河邊找鬼。 笑死舆绎,一個(gè)胖子當(dāng)著我的面吹牛鲤脏,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播吕朵,決...
    沈念sama閱讀 41,221評(píng)論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼猎醇,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了努溃?” 一聲冷哼從身側(cè)響起硫嘶,我...
    開封第一講書人閱讀 40,174評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎梧税,沒想到半個(gè)月后沦疾,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體则拷,經(jīng)...
    沈念sama閱讀 46,699評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,770評(píng)論 3 343
  • 正文 我和宋清朗相戀三年曹鸠,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了煌茬。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,918評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡彻桃,死狀恐怖坛善,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情邻眷,我是刑警寧澤眠屎,帶...
    沈念sama閱讀 36,573評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站肆饶,受9級(jí)特大地震影響改衩,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜驯镊,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,255評(píng)論 3 336
  • 文/蒙蒙 一葫督、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧板惑,春花似錦橄镜、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,749評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至裆馒,卻和暖如春姊氓,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背喷好。 一陣腳步聲響...
    開封第一講書人閱讀 33,862評(píng)論 1 274
  • 我被黑心中介騙來泰國打工翔横, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人绒窑。 一個(gè)月前我還...
    沈念sama閱讀 49,364評(píng)論 3 379
  • 正文 我出身青樓棕孙,卻偏偏與公主長得像舔亭,于是被迫代替她去往敵國和親些膨。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,926評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容

  • 8086匯編 本筆記是筆者觀看小甲魚老師(魚C論壇)《零基礎(chǔ)入門學(xué)習(xí)匯編語言》系列視頻的筆記锭沟,在此感謝他和像他一樣...
    Gibbs基閱讀 37,248評(píng)論 8 114
  • 原文地址:C語言函數(shù)調(diào)用棧(一)C語言函數(shù)調(diào)用棧(二) 0 引言 程序的執(zhí)行過程可看作連續(xù)的函數(shù)調(diào)用。當(dāng)一個(gè)函數(shù)執(zhí)...
    小豬啊嗚閱讀 4,630評(píng)論 1 19
  • 匯編定義 匯編大多數(shù)是指 ** 匯編語言 , 匯編程序 识补。把機(jī)器語言翻譯成機(jī)器語言**的過程稱為匯編族淮。 高級(jí)語言與...
    Luyc_Han閱讀 246評(píng)論 0 0
  • 1字=2個(gè)字節(jié),一個(gè)16位寄存器儲(chǔ)存一個(gè)字凭涂,其中高8位儲(chǔ)存高字節(jié)祝辣,低8位儲(chǔ)存低字節(jié)。 上圖中切油,0字節(jié)單元和1字節(jié)單...
    余生筑閱讀 200評(píng)論 0 0
  • add指令 CPU中的棧機(jī)制 CPU提供棧作為內(nèi)存空間蝙斜,它具有以下特點(diǎn) 1.棧頂?shù)亩蔚刂?..
    余生筑閱讀 318評(píng)論 0 0