C++ 关键词:asm

来自cppreference.com
< cpp‎ | keyword


 
 
C++ 语言
 
 

用法

示例

注意,这个示例以 GCC/Clang 在 Linux 的 x86_64 平台上正常工作,但不保证别处也行, 因为 asm 声明是条件性支持并 (C++11 起)由实现定义的

#include <cstring>
 
int main() noexcept
{
    const char* const c_string = "Hello, world!\n";
    asm
    (R"(
        movq $1, %%rax                 # sys_write 的 syscall 号
        movq $1, %%rdi                 # 文件描述符 1 (stdout)
        movq %0, %%rsi                 # 指向 C 字符串的指针
        movq %1, %%rdx                 # C 字符串的长度
        syscall                        # 调用 OS 系统调用处理函数
    )"
    :                                  // 无输出操作数
    :   "r"(c_string),                 // 输入: 指向 C 字符串的指针
        "r"(std::strlen(c_string))     // 输入: C 字符串的大小
    :   "%rax", "%rdi", "%rsi", "%rdx" // 占用寄存器
    );
}

输出:

Hello, world!