Renesas Synergy™

FAQ 103971 : マクロの中でラベルを定義する方法を教えて下さい。

回答

マクロの中でラベルを定義する場合に有用な機能としてマクロ生成番号があります。
これは、マクロ展開のたびに5桁の10進数字を生成していくという機能です。
1回目のマクロ展開では00000、2回目のマクロ展開では00001というようになります。
これでラベルを修飾することにより、異なるラベルを自動生成することができます。

<記述例>

.macro test Ri,Rj,Rk
cmp/pz ¥Rk
bt label¥@
mov ¥Ri,¥Rj
label¥@:
sub ¥Rk,¥Rk
.endm

¥@の部分がマクロ生成番号の指定です。
このマクロを次のように2回コールすると

test r0,r1,r2

test r3,r4,r5マクロ展開の結果は

cmp/pz r2
bt label00000
mov r0,r1
label00000:
sub r2,r2
cmp/pz r5
bt label00001
mov r3,r4
label00001:
sub r5,r5

となります。
label¥@label00000label00001に置き換わります。
詳細はアセンブラマニュアル:マクロ機能の項を参照ください。

適用製品

SuperHファミリ用C/C++コンパイラパッケージ
H8SX, H8S, H8ファミリ用C/C++コンパイラパッケージ
他にご質問がございましたら、リクエストを送信してください