Microsoft operators reference for MASM显示杂项部分中的::
运算符。MASM是否有::运算符?
该商品的链接将打开一个页面;;
operator。
我不是这是表中的错误名称还是错误链接的项目。还有其他一些项目确实有错误的联系。
MASM是否有::
运算符?它是做什么的?
Microsoft operators reference for MASM显示杂项部分中的::
运算符。MASM是否有::运算符?
该商品的链接将打开一个页面;;
operator。
我不是这是表中的错误名称还是错误链接的项目。还有其他一些项目确实有错误的联系。
MASM是否有::
运算符?它是做什么的?
是的,它的确如此。
我在旧的TASM 4 manual(PDF的打印文档的135页)中找到了对它的引用。
它被用来以比它们在所定义的过程更宽的范围定义标签
考虑:
foo PROC
lbl:
ret
foo ENDP
bar PROC
jmp lbl ;Undefined symbol lbl
bar ENDP
这不会在组装MASM因为lbl
是在另一个步骤。
然而,这样的:
foo PROC
lbl::
ret
foo ENDP
bar PROC
jmp lbl ;Fine
bar ENDP
一样。
至于我还记得,在TASM/NASM标签的行为不同,他们没有一个范围(TASM可以制成虽然模仿MASM)。
谢谢。爱读你的材料顺便说一句。真的满足你的命令。 – Lycan
在NASM中,'lbl:'具有文件范围。本地标签以'.'开始(所以你会写'.lbl:'),但它们实际上只是'foo.lbl'的语法糖。所以在'bar:'之后,你仍然可以写'jmp foo.lbl'。 (NASM没有任何东西PROC,你只写'全球foo'如果你想'foo'标签的符号表导出。) –
@PeterCordes这就是为什么我喜欢它! ;) –
1996年的微软书MASM程序员指南6.1揭示了一些额外的语义。
双冒号::
可以用于传递从寄存器值制作在过程调用自变量的远指针。第157页所描述的那样:
可以在一个段传递FAR指针::偏移对,如示于以下。请注意使用双冒号分隔寄存器对。
..
INVOKE SomeProc, ES::BX, arg1, arg2
[这里](https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/masm-numbers-and-operators#symbols_in_masm_expressions)'SA提到它的masm链接。 –
比在MASM docs正确的@DavidWohlferd中有更好的材质。好的。 – Lycan
@DavidWohlferd该链接适用于Microsoft的调试工具,MASM本身不支持使用'::'运算符来“指示类的成员”。 –