次のサンプル コードをコンパイルすると (これらは本質的に目的のないジャンク アセンブリ ステートメントです)、次のエラーが発生します。
def-asm-pop.c:13:3: エラー: 数値定数の前に文字列リテラルが必要です
行 13 は、コメント化されていない「ASM」行です。
#define iMOV "mov %eax,%ebx\n\t"
#define iNOP "nop\n\t"
#define iASM __asm__(iMOV iNOP)
#define MOV 0xB8
#define NOP 0x90
#define ASM __asm__(MOV NOP)
int main() {
//iASM; /* This one works when uncommented */
ASM; /* The one causes the error when uncommented */
return 0;
}
インライン アセンブリでのHello Worldスタイルの試みにはエラーがあるかもしれませんが、それは私が克服するためのもう 1 つの足がかりです。現時点では、テキスト コマンドを定義するのと同じように、オペコードのリストを定義してから、それらから構築されたアセンブリ ステートメント リストを定義することはできないようです。ステートメントASM
のように機能させるにはどうすればよいですか?iASM