MASM6からTASM5に(IDEALモードで)マクロを移植しようとしていますが、エラーが発生しています。マクロ自体はうまく組み立てが、私はそれを呼び出すようにしようとしたとき、私は、組み立て時に次のエラーが表示されます式でマクロ名を使用することはできませんTASMはマクロをオペランドとして使用できますか?
エラー xxx.asm(##):M_SWAP16
マクロはテキストマクロから数値を受け取り、バイトスワップを実行します。マクロは一般に即値を取るopsで呼び出されるか、変数の初期化時に呼び出されます。
MACRO M_swap16 operand
LOCAL result
result = (((operand and 0FFh) shl 8) or ((operand and 0FF00h) shr 8))
exitm %result
ENDM
IPPROTO_TCP EQU 6
.
.
.
mov [protocol], M_swap16(IPPROTO_TCP) ; fails
.
.
.
protocol DW ?
protocol_default DW M_swap16(IPPROTO_TCP) ; fails
MASM 6.11では正常に動作します。 TASMをIDEALからMASMモードに切り替えることは役に立ちません。また、マクロをEQU文に移動しません。アイデア?
私はそれが醜いことに同意します。この制限により、マクロをEQU文に移動させることもなくなります。それはあまりにも悪いです。あなたは、そのレベルのマクロ機能をサポートするTASM互換のアセンブラを知っていますか?レイジーアセンブラは不完全であり放棄されているようです。 – toejam
上記のマクロを使用して、 "M_swap16_EXPRESSION、88h"というEQU行を一度生成し、それを "protocol_default DW IPPROTO_TCP"のようなマクロなしで他の場所と同じように使用できます。 TASM 5.3とTASM 5.4(CodeGear)でテスト済み –
byteptr