我正在尝试使用薄荷64位在计算机上运行一些汇编代码。 因此我运行以下命令:
as --32 tst.s -o tst.o && ld -m elf_i386 tst.o -o tst
当我尝试运行我的对象时,我收到一个错误:
./tst.o
bash: ./tst.o: cannot execute binary file: Exec format error
我做错了什么?我不确定我的代码是否有问题,或者我需要一些特殊的东西才能在我的64位机器上运行32位代码。
我添加了我正在尝试运行的代码:
.code32
.section .text
.global _start
_start:
call main
jmp exit
.global factorial
.type factorial, @function
factorial:
pushl %ebp
movl %esp, %ebp
subl $8, %esp
movl 4(%ebp),%eax
addl 4(%ebp),%eax
movl %eax, -8(%ebp)
movl -8(%ebp),%eax
movl %eax, -4(%ebp)
movl %ebp, %esp
popl %ebp
ret
.global main
.type main, @function
main:
pushl %ebp
movl %esp, %ebp
subl $16, %esp
movl $5,%eax
movl %eax, -8(%ebp)
movl -8(%ebp),%eax
movl %eax, -4(%ebp)
movl -4(%ebp),%eax
movl %eax, -16(%ebp)
pushl -16(%ebp)
call factorial
movl %eax, -12(%ebp)
addl $4,%esp
movl -12(%ebp),%eax
movl %ebp, %esp
popl %ebp
ret
.type exit, @function
exit:
movl $0, %ebx
movl $1, %eax