linux - 打印宏在汇编语言中如何工作?

标签 linux assembly macros nasm x86-64

section .data
%macro print 2
mov rax ,1      ; function call
mov rdi ,1      ; device
mov rsi ,%1         ; source of data
mov rdx ,%2         ; length of data
syscall         ; system call
%endmacro

最佳答案

该宏使用 sys_write() 的正确值设置 64 位调用约定的寄存器,然后执行 syscall

此外,该宏还有两个参数(macro print 2),分别用代码中的%1%2表示,分别移入RSIRDX,分别表示要打印的字符串存放的地址和字符串的长度。

关于linux - 打印宏在汇编语言中如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49248245/

相关文章:

linux - 在 Bash/sed 中分隔字符

assembly - 是否有编程语言 "below"汇编?

visual-studio - 您是否对Microsoft Visual Studio有任何推荐的宏?

macros - Scheme的语法规则——在 `...`中混合不同的语法选择

linux - 连接 Postgres Db : Server Certificate Does Not Match Host Name 时出错

在 Terminal Linux 中像 gcc 一样在 CMD 中编译 .c 程序?

c++ - 关于 `statfs64` 的更多解释

linux - ARM 汇编时间系统调用意外值

encryption - 如何加密程序以防止反汇编?

c++ - 为什么 CERT 标准 PRE00-CPP 说 "Avoid defining macros"