gccで実行可能ファイルを作成しようとしています。2つのファイルvirtualstack.c(以下のCコードで構成されています)と、AT&T構文で記述されたIntel x86アセンブリコード(Cコードの下に表示)で構成されているstack.sがあります。私のコマンドラインコマンドはですがgcc -c virtualstack.c -s stack.s
、2つのエラーが発生します(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