“ PTR”和“ NEAR PTR”有什么区别?

时间:2019-04-25 07:24:29

标签: assembly x86 masm

我正在查找包含“ NEAR PTR”的示例,但可以轻松地用“ PTR”替换它们。使用“ NEAR PTR”有什么好处吗?

1 个答案:

答案 0 :(得分:1)

NEAR是16位过去的遗产。假设您的代码是32位或64位,则它们是相同的。

这与内存段有关(Wikipedia链接到x86 32-bit64-bit)。

LABEL statement中,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相同。