【发布时间】:2020-03-10 10:54:48
【问题描述】:
嘿,我必须在汇编中调用 glibc 的一个函数来进行练习。所以我找到了这段代码来调用printf。
section .rodata
format: db 'Hello %s', 10
name: db 'Conrad'
section .text
global main
extern printf
main:
; printf(format, name)
mov rdi, format
mov rsi, name
call printf
; return 0
mov rax, 0
ret
但我得到了错误:
符号 `printf' 导致 R_X86_64_PC32 重定位溢出
编译:
nasm -f elf64 -o test.o test.asm
gcc -o test test.o
执行后出现错误
./测试
【问题讨论】:
-
将
\0添加到format和name。 -
同样的错误
-
@eanmos:这是一个单独的问题。