我正在尝试使用 gcc 创建一个可执行文件。我有两个文件 virtualstack.c(它由下面的 C 代码组成)和 stack.s,它由用 AT&T 语法编写的 intel x86 汇编代码组成(见下面的 C 代码)。我的命令行命令是gcc -c virtualstack.c -s stack.s
,但出现两个错误(stack.s 中的第 3 行)-missing symbol name in directive
和no such instruction _stack_create
. 我以为我已经在程序集中正确声明了 C 中的函数,前缀为下划线 ( _
)。我将非常感谢任何评论。
C代码:
#include <stdio.h>
#include <stdlib.h>
extern void stack_create(void);
int main(void)
{
stack_create();
return 0;
}
汇编代码:
.global _stack_create
.type, @function
_stack_create
pushl %ebp
movl $5, %esp
movl %esp, ebp
movl $21, %edx
pushl %edx