MASM有一个::运算符吗?

Lyc*_*can 3 assembly masm

Microsoft 运营商对MASM的引用显示了::Miscellaneous部分中的运算符.

此项目的链接将打开;;操作员的页面.

我不是这是表中的错误名称还是项目上的错误链接.还有其他几个项目有错误的链接.

MASM有::运营商吗?它有什么作用?

Mar*_*oom 6

是的,它确实.

我发现它在一个老的参照TASM 4手册(页124打印文档的,PDF的135).

它用于定义范围比其定义的范围更广的标签.

考虑:

foo PROC

lbl:
  ret

foo ENDP

bar PROC
 jmp lbl     ;Undefined symbol lbl
bar ENDP
Run Code Online (Sandbox Code Playgroud)

这不会在MASM中汇编,因为lbl在另一个过程中.
但是,这个:

foo PROC

lbl::
  ret

foo ENDP

bar PROC
 jmp lbl     ;Fine
bar ENDP
Run Code Online (Sandbox Code Playgroud)

确实.

据我所知,TASM/NASM中的标签行为不同,它们没有范围(尽管可以使用TASM来模拟MASM).


Lyc*_*can 5

1996年的Microsoft书籍MASM程序员指南6.1揭示了一些额外的语义.

::可以使用双冒号将寄存器值生成的far指针作为过程调用中的参数传递.第157页描述了它:

您可以在segment :: offset对中传递FAR指针,如下所示.注意使用双冒号分隔寄存器对. ..

INVOKE SomeProc, ES::BX, arg1, arg2