使用x86_64 NASM扫描时出现段故障

问题描述 投票:1回答:1

这是我的程序:

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 ...

scanf x86-64 nasm
1个回答
0
投票

Godbolt.org检查,由c ++编译器生成的程序集完全相同。

© www.soinside.com 2019 - 2024. All rights reserved.