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
表示,分别移入RSI
和RDX
,分别表示要打印的字符串存放的地址和字符串的长度。
关于linux - 打印宏在汇编语言中如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49248245/