print宏如何在汇编语言中工作?

时间:2018-03-13 04:14:41

标签: 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

1 个答案:

答案 0 :(得分:0)

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

此外,宏有两个参数(macro print 2),在代码中由%1%2表示,它们被移动到RSI和{{1表示存储要打印的字符串的地址和字符串的长度。