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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > windows >内容正文

windows

一步步编写操作系统 77 内联汇编与ATT语法简介

發(fā)布時(shí)間:2023/12/10 windows 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 一步步编写操作系统 77 内联汇编与ATT语法简介 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

內(nèi)聯(lián)匯編

之前和大家介紹過(guò)了一種匯編方法,就是C代碼和匯編代碼分別編譯,最后通過(guò)鏈接的方式結(jié)合在一起形成可執(zhí)行文件。

另一種方式就是在C代碼中直接嵌入?yún)R編語(yǔ)言,強(qiáng)大的GCC無(wú)所不能,咱們本節(jié)要學(xué)習(xí)的就是這一種,它稱為內(nèi)聯(lián)匯編。

其實(shí)還有另外一種,就是那些技術(shù)大牛才能玩得轉(zhuǎn)的方式,將c代碼編譯為匯編代碼后,再修改匯編代碼。

什么是內(nèi)聯(lián)匯編

內(nèi)聯(lián)匯編稱為inline assembly,GCC支持在C代碼中直接嵌入?yún)R編代碼,所以稱為GCC inline assembly。大家知道,C語(yǔ)言不支持寄存器操作,匯編語(yǔ)言可以,所以自然就想到了在C語(yǔ)言中嵌入內(nèi)聯(lián)匯編提升“戰(zhàn)斗力”的方式,通過(guò)內(nèi)聯(lián)匯編,C程序員可以實(shí)現(xiàn)C語(yǔ)言無(wú)法表達(dá)的功能,這樣使開發(fā)能力大為提升。

內(nèi)聯(lián)匯編按格式分為兩大類,一類是最簡(jiǎn)單的基本內(nèi)聯(lián)匯編,另一類是復(fù)雜一些的擴(kuò)展內(nèi)聯(lián)匯編,在介紹它們之前,其實(shí)還有一點(diǎn)點(diǎn)頭疼的事,內(nèi)聯(lián)匯編中所用的匯編語(yǔ)言,其語(yǔ)法是AT&T,并不是咱們熟悉的Intel匯編語(yǔ)法,GCC只支持它,所以咱們還得了解下AT&T。

AT&T語(yǔ)法簡(jiǎn)介

我們?cè)诖髮W(xué)所學(xué)習(xí)的匯編語(yǔ)言大多數(shù)都是intel語(yǔ)法,也許這和教學(xué)系統(tǒng)都是微軟的操作系統(tǒng)dos和windows有關(guān),翻翻過(guò)去的教材,一律全是dos下匯編或windows下匯編。linux內(nèi)核中的匯編代碼一般都是AT&T語(yǔ)法,我想,隨著linux普及,以后在教學(xué)中會(huì)越來(lái)越多采取AT&T語(yǔ)法啦。

AT&T是匯編語(yǔ)言的一種語(yǔ)法風(fēng)格、格式。在某一處理器平臺(tái)上,無(wú)論匯編代碼是什么語(yǔ)法,其編譯出來(lái)的機(jī)器碼是一樣的,所以不要誤以為AT&T是一種新的機(jī)器語(yǔ)言。它僅僅是表達(dá)方式不同,意思是一樣的,這就像咱們漢語(yǔ)中,比如,“我今天與賀亞濤在食堂吃飯”,“今天在食堂,賀亞濤和我一起吃飯”,都表達(dá)的是同一個(gè)意思。

AT&T首先在Unix中使用,可當(dāng)初Unix并不是在x86處理器上開發(fā)的,最初是在PDP-11機(jī)器上開發(fā),后來(lái)又移植到VAX和68000的處理器上,所以AT&T的語(yǔ)法自然更接近于這些處理器的特性。雖然unix后來(lái)又移植到x86上了,但還是要尊重unix圈內(nèi)的習(xí)慣,其匯編語(yǔ)法還是接近于那些前輩處理器上的語(yǔ)法,這就是AT&T語(yǔ)法。

無(wú)論語(yǔ)法再怎么變,匯編語(yǔ)言中指令關(guān)鍵字肯定不能有太大出入,名字非常接近,只是在指令名字的最后加上了操作數(shù)大小后綴,b表示1字節(jié),w表示2字節(jié),l表示4字節(jié)。比如壓棧指令,intel中是push,AT&T中是pushl,最后這個(gè)’l’表示壓入4字節(jié)(long型大小)。在了解intel匯編指令的情況下,基本上能夠看懂AT&T的匯編指令。它們的主要差別是語(yǔ)法風(fēng)格,咱們對(duì)照著看下這兩種風(fēng)格的區(qū)別吧。

圖1

圖1續(xù)

好了,下節(jié)再說(shuō),哥下班回家了。

總結(jié)

以上是生活随笔為你收集整理的一步步编写操作系统 77 内联汇编与ATT语法简介的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。