これは少し愚かな構文質問かもしれませんが、変数タイプに基づいて条件付きジャンプを行う方法がありますか?私は引数としてバイト、単語、またはダブルワードを取って画面に書き込むことができるマクロ(クラス用)を書き込もうとしています。アセンブリの変数型をどのように比較しますか?
mWriteInt MACRO integer:REQ
;cmp integer, DWORD
;je dwordOp
movsx eax, word ptr integer
call WriteInt
mov edx, OFFSET endl
call WriteString
; for a DWORD
; dwordOp:
ENDM
基本的に、実行されるコードは、マクロに渡される変数のタイプに応じて異なる必要があります。どのようにこれを実行しようとしても、コンパイラエラーが発生します。
cmp integer, DWORD
cmp TYPE integer, DWORD
と私は本当にここからどこへ行くかわからない:
は、私が試してみました。私は、私は考えることができるすべての参照で見てきたが、普通の事
編集していないようです:OPATTR
オペレータがあるMASMで
mWriteInt MACRO integer:REQ
IF (TYPE integer EQ TYPE DWORD)
call WriteInt
ENDIF
IF (TYPE integer EQ TYPE BYTE)
call WriteInt
ENDIF
IF (TYPE integer EQ TYPE WORD)
movsx eax, word ptr integer
call WriteInt
ENDIF
mov edx, OFFSET endl
call WriteString
ENDM
あなたは、通常の比較を行い、あなたがIFのようなディレクティブを使用したいCPU命令を使用することはありません。 –
MASMのIFディレクティブは、Cのif文と同じように動作しません。https://msdn.microsoft.com/en-us/library/4bd8b239.aspx –
これは、LOLを投稿する前にグーグルで行うべきことです。私はもう一度試しましたが、エラーはなく実行されますが、動作していないようです。どんなタイプを渡しても、コードは決して実行されないようです。 –