C 链接并编译汇编函数
我有这样一个汇编函数C 链接并编译汇编函数,c,gcc,assembly,C,Gcc,Assembly,我有这样一个汇编函数 rfact: pushl %ebp movl %esp, %ebp pushl %ebx subl $4, %esp movl 8(%ebp), %ebx movl $1, %eax cmpl $1, %ebx jle .L53 leal -1(%ebx), %eax movl %eax, (%esp) call rfact imull %ebx, %eax .L53: addl $4, %
rfact:
pushl %ebp
movl %esp, %ebp
pushl %ebx
subl $4, %esp
movl 8(%ebp), %ebx
movl $1, %eax
cmpl $1, %ebx
jle .L53
leal -1(%ebx), %eax
movl %eax, (%esp)
call rfact
imull %ebx, %eax
.L53:
addl $4, %esp
popl %ebx
popl %ebp
ret
我明白我不能将它保存为rfact.s并编译它。必须将某些项(例如.text)附加到程序集的顶部。对于linux系统,这些是什么?我想从一个名为rfactmain.c的普通c文件中编写的主函数调用这个函数,这里有一个指令的“最小”前缀-用于ELF/SysV i386,并且: 我还建议在末尾附加一个函数大小指令:
.size rfact, .-rfact
最简单的编译方法是:gcc[-m32]-c-prfact.S
使用
-P
选项,您可以使用C样式的注释,而不必担心行号输出等问题。这将生成一个可以链接的对象文件。如果默认情况下gcc以x86-64为目标,则需要使用-m32
标志。对此表示抱歉。当我粘贴它时,我没有意识到它被弄坏了。我现在已经修好了!
.size rfact, .-rfact