错误:未知指令.type func,@ function

时间:2014-01-03 16:11:51

标签: assembly

.data
x: .long 2
r: .long 27

.text

.globl _start

_start:
        pushl x
        movl $0,%eax
        call func
        addl $4,%esp
        movl %eax,r
        movl r,%ebx
        movl $1,%eax
        int $0x80

.type func, @function
func:
        pushl %ebp
        movl %esp,%ebp
        movl 8(%ebp),%eax
        cmpl $0,%eax
        jle if
        jmp else
if:     movl %ebx,%eax
        jmp endif
else:   addl %eax,%ebx
        subl $1,%eax
        pushl %eax
        call func
        addl $4,%esp
endif:  movl %ebp,%esp
        popl %ebp
        ret

上面你看到我试图运行的程序。我把它归结为最后一个错误,我似乎无法找到答案。 错误消息如下:

test.s:19:1: error: unknown directive
.type func, @function
^

我使用gcc -m32 test.sggc -c test.s在Macintosh 10.9.1上编译了它。 我浏览谷歌寻找答案,但我似乎找不到任何答案。它是AT& T语法。

1 个答案:

答案 0 :(得分:5)

Mach-O汇编程序不使用该指令。你应该省略它。还有一些其他差异here