我正在研究c到x86编译器,实际上我正在生成一些代码行,但是当我尝试启动它时我有一个分段错误,我无法弄清楚错误的来源。 这是代码:
.file "test.c"
.text
.globl main
.type main, @function
main:
pushl %ebp
movl %esp, %ebp
subl $32, %esp
movl $2, %eax
movl %eax, -4(%ebp)
movl $3, %eax
movl %eax, -8(%ebp)
movl -4(%ebp), %eax
popl %ecx
addl %ecx, %eax
pushl %eax
movl -8(%ebp), %eax
movl %eax, -12(%ebp)
段错误似乎出现在第一条指令“pushl%ebp”
答案 0 :(得分:3)
好吧,假设你告诉我们的内容是正确的,大概有两种解释可能出错:
忽略完全“那里”的解释,例如“你的CPU坏了”,push
指令的段错误可能有两个原因:
根据所提供的信息,不可能说这两个中的哪一个导致问题。 你必须确定这一点。 (或者给我们一些更多的信息,例如关于如何执行代码的信息)