x86-64架构C语言通过内联汇编直接调用Linux系统调用

发布于 2024-06-22  87 次阅读


int main() {
    const char *msg = "hello\n";
    asm("mov $1, %%rax\n"         // 系统调用号 (sys_write)
        "mov $2, %%rdi\n"         // 文件描述符 (stdout)
        "mov %0, %%rsi\n"         // 消息地址
        "mov $6, %%rdx\n"         // 消息长度
        "syscall\n"               // 调用内核
        :
        : "r"(msg)                // 内联汇编输入操作数
        : "rax", "rdi", "rsi", "rdx");  // 被破坏的寄存器
    return 0;
}

最后更新于 2024-06-24