Inline Assembly in GCC Vs VC

Inline Assembly in GCC Vs VC

ID:40081492

大?。?82.32 KB

頁數(shù):10頁

時(shí)間:2019-07-20

Inline Assembly in GCC Vs VC  _第1頁
Inline Assembly in GCC Vs VC  _第2頁
Inline Assembly in GCC Vs VC  _第3頁
Inline Assembly in GCC Vs VC  _第4頁
Inline Assembly in GCC Vs VC  _第5頁
資源描述:

《Inline Assembly in GCC Vs VC 》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫。

1、InlineAssemblyinGCCVsVC++ByGurvinderSingh,20Oct2003?Introduction?介紹InlineAssemblyisdifferentinVC++andgcc.VCusesIntelsyntaxwhilegccusesAT&Tsyntax.HerewedefinethedifferenceinsyntaxofAT&TandIntel'sassembly.VC++和gcc的內(nèi)聯(lián)匯編是不同的。VC使用intel匯編語法格式,而gcc使用AT&T語法格式。這里我們簡(jiǎn)略說說這兩種語法格式的不同。?So

2、urceandDestinationOrdering?原操作數(shù)和目標(biāo)操作數(shù)的位置順序InAT&Tsyntaxthesourceisalwaysontheleft,andthedestinationisalwaysontherightwhichisoppositeoftheIntel'ssyntax.在AT&T中,原操作數(shù)始終在左邊,目標(biāo)操作數(shù)始終在右邊。而intel格式中恰恰相反(即原操作數(shù)始終在右邊,目標(biāo)操作數(shù)始終在左邊);AT&TIntelMoveebxtoeaxmovl%ebx,%eaxmoveax,ebxMove100toebxMov

3、l$100,%ebxMovebx,100?Prefixes/SuffixesforregisternamingandImmediateValues?寄存器以及立即數(shù)的前綴和后綴Registernamesareprefixedwith"%"inAT&TwhileinIntelsyntaxtheyarereferencedasis.InAT&Tsyntax$isprefixedtoalltheimmediatevalueswhilenoprefixisrequiredinIntel'sformat.InIntelsyntaxhexadecimal

4、orbinaryimmediatedataaresuffixedwith'h'and'b'respectively.Alsoifthefirsthexadecimaldigitisaletterthena'0'prefixesthevalue.在AT&T格式中,寄存器必須加上前綴"%",而intel的沒有這個(gè)要求。在AT&T中格式,立即數(shù)必須加上前綴"$",而intel的沒有這個(gè)要求。在intel格式中,十六進(jìn)制和二進(jìn)制格式的立即數(shù)會(huì)分別以'h'和'b'為后綴,如果十六進(jìn)制數(shù)的第一位數(shù)字是字母的話,號(hào)必須加上'0'前綴。InAT&Tthein

5、structionsaresuffixedbyb,w,orl,dependingonwhethertheoperandisabyte,word,orlong.ThisisnotmandatoryasGCCtriestoprovidetheappropriatesuffixbyreadingtheoperands.Butitisrecommendedtoprovidethesuffixesasitimprovescodereadabilityanditpreventscompilerfrommakingamistakewhileguessing

6、.TheequivalentformsforIntelisbyteptr,wordptr,anddwordptronlywhenreferencingmemory在AT&T中,會(huì)根據(jù)操作數(shù)的大小是字節(jié),雙字節(jié)還是四字節(jié)分別在指令后面加上字母b,w和l。當(dāng)然,這對(duì)以gcc來說不是強(qiáng)制性的,因?yàn)間cc可以根據(jù)讀取的操作數(shù)實(shí)際大小自動(dòng)添加合理的后綴。不過,我們還是推薦通過添加后綴來增強(qiáng)程序的可讀性,也避免當(dāng)編譯器必須猜測(cè)操作數(shù)大小時(shí)而犯的錯(cuò)誤。這種方法在intel語法格式中是通過byteptr,wordptr和dwordptr來實(shí)現(xiàn)的。AT&TIn

7、telRegisters%eax%ebx%ecxeaxebxecxedx%edxMoveebxtoeaxmovl%ebx,%eaxmoveax,ebxMoveFFinebxmovl$0xff,%ebxmovebx,0ffh?AccessingvariablesfrominsideInlineASM?在內(nèi)聯(lián)匯編中訪問變量Foraccessingvaluesofglobalvariablesanunderscorehastobeprefixedinbothcases.Letssayxisaglobalorstaticvariable.InInte

8、l'sformat_xgivespointertothevariablewhile[_x]givesitsvalue.InAT&Tformat$_xgivesthe

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。