这是我的程序:
section .text
extern printf, scanf
global main
main:
mov rdi, msg1
mov rax, 0
call printf
mov rsi, res
mov rdi, fmt
mov rax, 0
call scanf
mov rsi, [res]
mov rdi, msg2
mov rax, 0
call printf
ret
section .data
fmt db '%d', 0
msg1 db 'Please give a number: ', 0
msg2 db 'Your number is %d', 10, 0
res dq 0
从gdb,我得到了:
“程序接收到的信号SIGSEGV,分段错误。/lib/x86_64-linux-gnu/libc.so.6中_IO_vfscanf()中的0x00007ffff7e4d88a
我做错了什么?
这里是我的程序:.text extern printf,scanf全局主main:mov rdi,msg1 mov rax,0调用printf mov rsi,res mov rdi,fmt mov rax,0调用scanf mov ...
经Godbolt.org检查,由c ++编译器生成的程序集完全相同。