我正在查找包含"NEAR PTR"的示例,但它们很容易被"PTR"替换。使用"NEAR PTR"有什么好处吗?
NEAR是16位过去的遗产。假设您的代码是 32 位或 64 位,它们是相同的。
这是关于内存段的(维基百科链接到x86 32位和64位(。
在 LABEL 语句中,PTR 和 NEAR PTR 都只存储一个 32/64 位内存地址,没有段。
如果在 64 位 MASM 下编译下一个代码:
_DATA SEGMENT
justPtr LABEL PTR db
nearPtr LABEL NEAR PTR db
justPtrSize dd SIZEOF justPtr
nearPtrSize dd SIZEOF nearPtr
_DATA ENDS
并在Visual Studio调试器下检查大小:
?justPtrSize
8
?nearPtrSize
8
事实上,PTR 占用 8 字节(64 位(,与 NEAR PTR 相同。