次のようにコードします。
\#define CS 0x18
asm ("pushl CS"
);
または入力引数として何か:
asm("pushl %0 \n\t"
:"m"(CS) \
)
上記のインライン asm コードでマクロ CS を使用できますか?
次のようにコードします。
\#define CS 0x18
asm ("pushl CS"
);
または入力引数として何か:
asm("pushl %0 \n\t"
:"m"(CS) \
)
上記のインライン asm コードでマクロ CS を使用できますか?
CS は、最初の例ではなく、2 番目の例で使用できます。
マクロは、コンパイラ/アセンブラが動作する前に置換されるため、C またはアセンブリに関係なく動作します。
ただし、マクロは文字列に展開されないため、最初の例は機能しません。
最初の例を機能させたい場合は、文字列化を使用します。
#define STR1(x) #x
#define STR(x) STR1(x)
asm ("pushl " STR(CS));
これは に展開STR(CS)
され"0x18"
、 と連結され"pushl "
ます。
またはx86 asm内にビルドします
call macro1 ;from anywhere in asm code
.macro1
do stuff
ret