ASM(VC內嵌彙編)

ASM(VC內嵌彙編)

ASM是C++中的一個關鍵字,用於在C++源碼中內嵌彙編語言。ASM能寫在任何C++合法語句中,目前asm還不是C的標準關鍵字,C11標準未加入正文,僅在Annex J中標記為“公共擴展”。

基本介紹

  • 中文名:asm
  • 外文名:asm
  • 釋義:C++內嵌彙編
  • 概述:asm是C++中的一個關鍵字
  • 詳述:能寫在任何C++合法語句中
關鍵字,詳述,

關鍵字

雖然asm並不是C的標準關鍵字(C11標準未加入正文,僅在Annex J中標記為“公共擴展”),但是大多數C實現都將其視為一個關鍵字。
asm是C++標準關鍵字,但是標準沒有規定其詳細用法。相應的用法為實現定義。

詳述

下面介紹Visual C++中的asm關鍵字用法。
__asm關鍵字啟動內聯彙編並且能寫在任何C++合法語句之處。它不能單獨出現,必須接彙編指令、一組被大括弧包含的指令或一對空括弧。術語“__asm 塊”在這裡是任意一個指令或一組指令無論是否在括弧內。
Visual Studio 2015起始頁Visual Studio 2015起始頁
以下代碼片段是在括弧內的一個簡單的__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源檔案里剪下和黏貼文字到檔案來。
不同於C和C++的括弧,在Visual Studio中,包含__asm塊的括弧對變數的作用域並沒有效果。你也能嵌套__asm塊,嵌套對變數作用域也沒有效果。

相關詞條

熱門詞條

聯絡我們