0

次のようにコードします。

\#define CS 0x18

asm ("pushl CS"
    );

または入力引数として何か:

asm("pushl %0 \n\t"

     :"m"(CS) \

    )

上記のインライン asm コードでマクロ CS を使用できますか?

4

2 に答える 2

2

CS は、最初の例ではなく、2 番目の例で使用できます。

マクロは、コンパイラ/アセンブラが動作する前に置換されるため、C またはアセンブリに関係なく動作します。
ただし、マクロは文字列に展開されないため、最初の例は機能しません。

最初の例を機能させたい場合は、文字列化を使用します。

#define STR1(x) #x
#define STR(x) STR1(x)
asm ("pushl " STR(CS));

これは に展開STR(CS)され"0x18"、 と連結され"pushl "ます。

于 2012-05-08T10:56:56.117 に答える
-1

またはx86 asm内にビルドします

call macro1 ;from anywhere in asm code


.macro1
do stuff
ret
于 2013-05-29T11:08:24.330 に答える