2017-08-28 5 views
3

Microsoft operators reference for MASMには、その他のセクションに::オペレータが表示されます。MASMには::演算子がありますか?

この項目のリンクは、;; operatorのページを開きます。

私はこれが間違った名前か、間違ったリンクかどうかはわかりません。間違ったリンクを持つ他のいくつかの項目があります。

MASMには::の演算子がありますか?どうしますか?

+4


(https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/masm-numbers-and-operators#symbols_in_masm_expressions)「SAそれを言及するmasmのリンク。 –

+0

MASMの適切な@DavidWohlferdよりも格段に優れた素材です。良いもの。 – Lycan

+2

@DavidWohlferdこのリンクはMicrosoftのデバッグツール用のもので、 'クラスのメンバーを示すための' ::演算子の使用はMASM自身ではサポートされていません。 –

答えて

6

はい、あります。

古いTASM 4 manual(印刷された文書の124ページ、PDFの135ページ)にその参照が見つかりました。彼らがで定義されている手順よりも広い範囲でラベルを定義するために使用される

考えてみましょう:。

foo PROC 

lbl: 
    ret 

foo ENDP 

bar PROC 
jmp lbl  ;Undefined symbol lbl 
bar ENDP 

lblは、別の手順であるので、これはMASMにアセンブルしていません。
しかし、この:

foo PROC 

lbl:: 
    ret 

foo ENDP 

bar PROC 
jmp lbl  ;Fine 
bar ENDP 

はありません。

私が覚えている限り、TASM/NASMのラベルは異なる動作をしますが、スコープはありません(TASMではMASMをエミュレートできます)。

+0

ありがとうございます。あなたの資料BTWを読んで愛する。あなたの注文方法を本当に満足させます。 – Lycan

+0

NASMでは 'lbl:'にファイルスコープがあります。ローカルラベルは '.'で始まります(' .lbl: 'と書いてあります)が、実際には' foo.lbl'の構文的な砂糖です。したがって 'bar:'の後に 'jmp foo.lbl'と書くことができます。 (NASMにはPROCはありません。 'foo'ラベルをシンボルテーブルにエクスポートするには' global foo'と書いてください)。 –

+1

@PeterCordesだから私はそれを愛しています! ;) –

5

1996年のMicrosoftの書籍MASMプログラマーズガイド6.1では、いくつかの追加のセマンティクスが明らかになりました。

ダブルコロン::を使用して、プロシージャコールでレジスタ値から生成された遠端ポインタを引数として渡すことができます。ページ157は、それを説明します

あなたはセグメントにFARポインタを渡すことができます::以下に示すように、ペアを相殺しました。ダブルコロンを使用してレジスタのペアを区切ることに注意してください。
.. [ここ] INVOKE SomeProc, ES::BX, arg1, arg2

関連する問題