编译的程序集在Ubuntu下生成分段错误

时间:2016-06-05 15:35:54

标签: assembly segmentation-fault

我在汇编中有以下代码:

.section .text
  .global _start

_start:
  pushl %ebp
  movl  %esp, %ebp
  subl  $16, %esp
  movl  $4, -4(%ebp)
  movl  $6, -8(%ebp)
  mov   $0, %eax
  leave
  ret

理论上与以下C代码相同:

int(main) {
  int a = 4;
  int b = 6;
  return 0;
}

但是,使用以下命令运行编译和链接的汇编代码时出现分段错误:

as -32 main.asm -o main.o
ld -melf_i386 -o main main.o    

另外,如果我使用objdump将C对象文件转换为程序集并使用该代码(看起来完全相同)。这一切都会导致分段错误。

我错过了什么或者原因在于我尝试运行32位汇编和64位虚拟Ubuntu机器?

0 个答案:

没有答案