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

标签 assembly x86 masm

我正在查找包含“NEAR PTR”的示例,但它们很容易用“PTR”替换。使用“NEAR PTR”有什么优势吗?

最佳答案

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

这是关于内存段的(维基百科链接到 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 相同。

关于assembly - “PTR” 和 “NEAR PTR” 和有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55843936/

相关文章:

assembly - 修改二进制文件中的游戏设置

linux - 端口映射 I/O 地址空间的位置

assembly - 由于操作码和操作数的组合无效,无法右移

exception - 使用指向我的函数的指针 arg 会引发异常

c++ - 程序集 :are they faster than global variables? 中的局部变量

cocoa - 在运行时确定程序段(HEADER、TEXT、CONST 等)

c++ - 性能 AVX/SSE 汇编与内部函数

assembly - MIPS assembly 标签

c - 索引数组时循环变量类型会影响效率吗?

c++ - 试图从地址获取值会导致访问冲突?