1

程序收到信号 SIGSEGV,分段错误。

我正在使用这个汇编程序:由于某种原因,我遇到了分段错误,它与堆栈有关吗?这个程序甚至应该输出什么?有人告诉我运行它,看看它做了什么,有什么想法吗?我认为这会有问题并发表了一篇关于它的帖子,但这不是问题,我尝试使用 GDB 对其进行调试,但这并没有真正帮助。如果你能告诉我它的输出可能会更好,这就是我真正想要的

.code32
.intel_syntax noprefix

.global _start

_start:
      mov eax, 0x04
      push eax
      mov eax, 0x2d
      push eax
      call asm2

asm2:
    push ebp
    mov ebp, esp
    sub esp, 0x10
    mov eax, DWORD PTR [ebp + 0xc] --- seg fault here
    mov DWORD PTR [ebp-0x4], eax
    mov eax, DWORD PTR[ebp+0x8]
    mov DWORD PTR [ebp-0x8], eax
    jmp part_b

part_a:
     add DWORD PTR [ebp - 0x4], 0x1
     add DWORD PTR [ebp + 0x8], 0x64
part_b:
     cmp DWORD PTR [ebp+0x8], 0x1d89
     jle part_a
     mov eax, DWORD PTR [ebp-0x4]
     mov esp, ebp
     pop ebp
     ret
4

0 回答 0