我试图在nasm中创建一个应该显示该字母的简单程序a.然而,它给了我一个Segfault并说:
./a.out: Symbol `printf' causes overflow in R_X86_64_PC32 relocation
Segmentation fault (core dumped)
Run Code Online (Sandbox Code Playgroud)
基本上,我试图将值0x61(字母a的十六进制)移动到内存地址1234,然后将其作为参数传递给printf.这是我的确切代码:
extern printf
section .text
global main
main:
push rbp
mov rax,0
mov qword [1234], 0x61 ; move 0x61 into address 1234
mov rdi, qword [1234] ; mov address 1234 into rdi
call printf ; should print the letter a
pop rbp
mov rax,0
ret
Run Code Online (Sandbox Code Playgroud)
我正在运行Linux x86_64