Inline Assembly in GCC Vs VC

Inline Assembly in GCC Vs VC

ID:40081492

大?。?82.32 KB

頁數(shù):10頁

時間: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 》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在學術(shù)論文-天天文庫。

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

2、urceandDestinationOrdering?原操作數(shù)和目標操作數(shù)的位置順序InAT&Tsyntaxthesourceisalwaysontheleft,andthedestinationisalwaysontherightwhichisoppositeoftheIntel'ssyntax.在AT&T中,原操作數(shù)始終在左邊,目標操作數(shù)始終在右邊。而intel格式中恰恰相反(即原操作數(shù)始終在右邊,目標操作數(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的沒有這個要求。在AT&T中格式,立即數(shù)必須加上前綴"$",而intel的沒有這個要求。在intel格式中,十六進制和二進制格式的立即數(shù)會分別以'h'和'b'為后綴,如果十六進制數(shù)的第一位數(shù)字是字母的話,號必須加上'0'前綴。InAT&Tthein

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

6、.TheequivalentformsforIntelisbyteptr,wordptr,anddwordptronlywhenreferencingmemory在AT&T中,會根據(jù)操作數(shù)的大小是字節(jié),雙字節(jié)還是四字節(jié)分別在指令后面加上字母b,w和l。當然,這對以gcc來說不是強制性的,因為gcc可以根據(jù)讀取的操作數(shù)實際大小自動添加合理的后綴。不過,我們還是推薦通過添加后綴來增強程序的可讀性,也避免當編譯器必須猜測操作數(shù)大小時而犯的錯誤。這種方法在intel語法格式中是通過byteptr,wordptr和dwordptr來實現(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

當前文檔最多預覽五頁,下載文檔查看全文

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

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