【发布时间】:2021-10-16 09:35:54
【问题描述】:
我正在尝试在 nasm 64 位 linux 中调用 printf。但是当我运行它时它会输出分段错误。我对齐堆栈,在字符串末尾添加一个 0 转义字符。但它仍然输出段错误。
代码:
section .data
_DATA1 db "aa", 0
section .text
global main
extern printf
main:
sub rsp, 16
lea r13, [_DATA1]
mov rdi, r13
call printf
add rsp, 16
mov rax, 0
ret
组装和链接
nasm -f elf64 a.asm
gcc -no-pie a.o
我哪里做错了?
【问题讨论】:
-
要对齐堆栈,您必须使用
sub rsp, 8
标签: gcc segmentation-fault printf x86-64 nasm