命名空间
变体
操作

C++ 关键字: asm

来自 cppreference.com
< cpp‎ | 关键字
 
 
C++ 语言
 
 

[编辑] 用法

[编辑] 示例

请注意,虽然此示例在 Linux 下 x86_64 平台上的 GCC/Clang 上运行良好,但不能保证在其他地方也能正常运行,因为 asm 声明是 有条件支持,并且(自 C++11 起) 实现定义的

#include <cstring>
 
int main() noexcept
{
    const char* const c_string = "Hello, world!\n";
    asm
    (R"(
        movq $1, %%rax                 # syscall number for sys_write
        movq $1, %%rdi                 # file descriptor 1 (stdout)
        movq %0, %%rsi                 # pointer to the c‐string
        movq %1, %%rdx                 # length of the c‐string
        syscall                        # invokes an OS system-call handler
    )"
    :                                  // no output operands
    :   "r"(c_string),                 // input: pointer to the c‐string
        "r"(std::strlen(c_string))     // input: size of the c‐string
    :   "%rax", "%rdi", "%rsi", "%rdx" // clobbered registers
    );
}

输出

Hello, world!