我很高兴使用64位机器编译32位汇编代码。
这是32位代码:
.global factorial
factorial:
pushl %ebp
movl %esp, %ebp
subl $8, %esp
pushl %esi
pushl %ebx
movl $1,-4(%ebp)
movl $2,%esi
for:
cmpl 8(%ebp), %esi
jg endfor
movl -4(%ebp), %ebx
imull %esi, %ebx
movl %ebx, -4(%ebp)
incl %esi
jmp for
endfor:
movl -4(%ebp), %eax
popl %ebx
popl %esi
movl %ebp, %esp
popl %ebp
ret
我正在建设:
> gcc test32.s -m32 -o test32
但我得到了:
/usr/lib/gcc/x86_64-linux-gnu/4.6.1/../../../../lib32/crt1.o: In function `_start':
(.text+0x18): undefined reference to `main'
collect2: ld returned 1 exit status
知道有人会去吗?提前谢谢!
答案 0 :(得分:0)
您正在尝试编译并链接到可执行文件。为了实现这一点,您需要一个包含程序启动功能的main
函数。
您只需要一个数学函数,无需任何方法来定义输入和输出。