-
ASM
(C++內嵌彙編)
鎖定
- 中文名
- asm
- 外文名
- asm
- 釋 義
- C++內嵌彙編
- 概 述
- asm是C++中的一個關鍵字
- 詳 述
- 能寫在任何C++合法語句中
ASM關鍵字
ASM詳述
下面介紹Visual C++中的asm關鍵字用法。
__asm關鍵字啓動內聯彙編並且能寫在任何C++合法語句之處。它不能單獨出現,必須接彙編指令、一組被大括號包含的指令或一對空括號。術語“__asm 塊”在這裏是任意一個指令或一組指令無論是否在括號內。
[3]
以下代碼片段是在括號內的一個簡單的__asm塊。
__asm { mov al, 2 mov dx, 0xD007 out al, dx }
另一種方法是,你可以在每個彙編指令前放置__asm
__asm mov al, 2
__asm mov dx, 0xD007
__asm out al, dx
因為__asm關鍵字是一個語句分隔符,你也可以將彙編指令放在同一行:
__asm mov al, 2 __asm mov dx, 0xD007 __asm out al, dx
以上三個的例子產生相同的代碼,但是第一種風格(把__asm塊用括號括起來)有一些優勢。括號可以清晰的將C或C++代碼和彙編代碼分開,並且避免了不必要的重複__asm關鍵字。括號也能避免模糊性。如果你想在__asm塊的同一行放置一個C或C++語句,你必須將塊用括號括起來。沒有括號,編譯器不能區分彙編代碼在哪裏停止以及C或C++代碼在哪裏開始。最後,因為在括號的文字有和原始MASM一樣的格式,你能輕鬆的從一個已有的MASM源文件裏剪切和黏貼文字到文件來。
- 參考資料
-
- 1. ISO/IEC 9899:2011 .ISO.2011-12-15[引用日期2016-04-17]
- 2. ISO/IEC 14882:2014 .ISO.2014-12-15[引用日期2016-04-17]
- 3. 《MSDN·_asm》 .MSDN[引用日期2012-07-23]