push
作为堆栈的参数,在x86-64中,它也使用某些特定的寄存器,并且仅在堆栈之后使用。就是说,我不明白为什么在尝试打印整数时会得到Segmentation fault
(k
和a
未使用): global _main
extern _printf
section .data
format: db "%d"
b: dw 10
blen: equ $-b
lenlen: equ $-blen
k: dw 6
section .bss
a: resw 1
section .text
_main:
sub rsp, 8
mov rax, 0
mov rdi, format
mov rsi, b
call _printf
mov rax, 0x2000001
mov rdi, 0
syscall
在x86-32中,您将参数压入堆栈,而在x86-64中,它也使用某些特定的寄存器,并且仅在堆栈之后使用。就是说,我不明白为什么在尝试打印时会出现细分错误...