编译程序集从64到m32 ld错误

时间:2012-03-03 10:21:04

标签: gcc assembly

我很高兴使用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

知道有人会去吗?提前谢谢!

1 个答案:

答案 0 :(得分:0)

您正在尝试编译并链接到可执行文件。为了实现这一点,您需要一个包含程序启动功能的main函数。

您只需要一个数学函数,无需任何方法来定义输入和输出。