В чем разница между «PTR» и «NEAR PTR»? - PullRequest
0 голосов
/ 25 апреля 2019

Я искал примеры, содержащие «NEAR PTR», но их было легко заменить на «PTR».Есть ли преимущество в использовании «NEAR PTR»?

1 Ответ

1 голос
/ 25 апреля 2019

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.

...