程序收到信号 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