【问题标题】:how does print macro work in assembly language?print 宏在汇编语言中是如何工作的?
【发布时间】:2018-03-13 04:14:40
【问题描述】:
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

【问题讨论】:

  • 它使用 fd=1 (stdout) 调用 Linux sys_write(),以及来自宏 args 的指针+长度。返回值在 rax 中。

标签: linux assembly macros nasm x86-64


【解决方案1】:

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

另外,宏接受两个参数(macro print 2),在代码中分别用%1%2表示,分别移到RSIRDX中,表示字符串要存放的地址分别存储要打印的和字符串的长度。

【讨论】:

    猜你喜欢
    • 2011-09-21
    • 1970-01-01
    • 2019-05-25
    • 1970-01-01
    • 1970-01-01
    • 2014-01-01
    • 2018-10-10
    • 2012-11-24
    相关资源
    最近更新 更多