解除引用$ esp时为什么会得到SIGSEGV?

时间:2017-09-05 16:07:57

标签: assembly segmentation-fault stack dereference

我正在调试我编写的小型汇编程序,每次都会出现分段错误 它被编译为64位。

section     .text
global      _start                              ;must be declared for linker (ld)

_start:                                         ;tell linker entry point
  mov eax, 1
  mov eax, 2
  mov eax, 3
  mov eax, 4
  mov eax, 5
  mov eax, 6
  push 'A'
  mov edx, [esp] ; Here's where it crashes
  call putc
  add esp, 4  

  mov     eax,1                               ;system call number (sys_exit)
  int     0x80                                ;call kernel

%include "utils.inc"

根据我的理解,堆叠的头部($edx的内容)应该是' A'。
为什么我无法访问堆栈的头部?

0 个答案:

没有答案