Share via


內嵌組譯工具概觀

Microsoft 特定的

內嵌組合語言可讓您在 C 和 C++ 來源程式中內嵌組合語言指令,而不需要額外的組合和連結步驟。 內嵌組合語言已內建於編譯器 — 您不需要個別的組譯工具,例如 Microsoft Macro Assembler (MASM)。

因為內嵌組合不需要個別的組譯及連結步驟,所以比個別進行組譯方便。 內嵌組譯程式碼可以使用範圍內的任何 C 或 C++ 變數或函式名稱,因此很容易就能與您程式的 C 和 C++ 程式碼整合。 而且,因為組譯程式碼可以與 C 和 C++ 陳述式混用,因此能夠執行單獨在 C 或 C++ 中相當麻煩或無法執行的工作。

__asm 關鍵字會叫用內嵌組譯工具,而且可以在 C 或 C++ 語句合法的位置出現。 它不可以單獨出現。 後面必須接著組譯碼指令、放在大括號中的指令群組,或至少是一對空的大括號。 這裡的「__asm 區塊」一詞是指任何指令或指令群組,不論是否放在大括號中。

下列程式碼是放在大括號中的簡單 __asm 區塊。 (程式碼是自訂函式初構序列)。

// asm_overview.cpp
// processor: x86
void __declspec(naked) main()
{
    // Naked functions must provide their own prolog...
    __asm {
        push ebp
        mov ebp, esp
        sub esp, __LOCAL_SIZE
    }

    // ... and epilog
    __asm {
        pop ebp
        ret
    }
}

或者,您可以將 __asm 放在每個組譯碼指令前面:

__asm push ebp
__asm mov  ebp, esp
__asm sub  esp, __LOCAL_SIZE

由於 __asm 關鍵字是陳述式分隔符號,您也可以在同一行上放置組譯碼指令:

__asm push ebp   __asm mov  ebp, esp   __asm sub  esp, __LOCAL_SIZE

END Microsoft 特定的

另請參閱

內嵌組合語言