Microsoft 运营商对MASM的引用显示了::Miscellaneous部分中的运算符.
此项目的链接将打开;;操作员的页面.
我不是这是表中的错误名称还是项目上的错误链接.还有其他几个项目有错误的链接.
MASM有::运营商吗?它有什么作用?
是的,它确实.
我发现它在一个老的参照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).
1996年的Microsoft书籍MASM程序员指南6.1揭示了一些额外的语义.
::可以使用双冒号将寄存器值生成的far指针作为过程调用中的参数传递.第157页描述了它:
您可以在segment :: offset对中传递FAR指针,如下所示.注意使用双冒号分隔寄存器对. ..
INVOKE SomeProc, ES::BX, arg1, arg2