gpt4 book ai didi

assembly - "DWORD can be used to declare a variable that contains the 32-bit offset of another variable"是什么意思?

转载 作者:行者123 更新时间:2023-12-02 19:05:01 25 4
gpt4 key购买 nike

我目前正在按照 Kip Irvine 的《汇编语言 x86 编程》一书学习汇编编程。

我知道 SDWORD 可用于将 32 位值分配给变量,例如

myVariable SDWORD -2147483648 
; assign the minimum negative number -2147483648 that can be contained within a SDWORD
; to variable named myVariable

但是在书中,作者还写道

The DWORD can be used to declare a variable that contains the 32-bit offset of another variable. Below, pVal contains the offset of val3:

pVal DWORD val3

不太明白这句话的意思?有人可以向我解释一下吗?特别是作者所说的另一个变量的32位偏移量是什么意思?

最佳答案

(Jester 基本上已经在评论中回答了这个问题,但为了完整起见,我将其作为实际答案发布。)

您已经知道 DWORD 可用于声明 32 位变量,因为这是 x86 上双字的大小。因此,唯一令人困惑的部分是“另一个变量的偏移量”的含义。

在这种情况下,这只是该变量的地址的另一种表达方式,因为在平面(非分段)32 位内存模型中,段(也称为基址)始终为 0 ,这意味着偏移量是唯一真正对地址有贡献的部分。

如果您熟悉 C 等语言的指针,那么他只是说您可以使用 DWORD 来存储指向另一个变量的指针。在 32 位 x86 上,指针的长度始终为 32 位,因此您始终使用 DWORD 来存储指针,无论它指向什么类型/大小的变量到。您甚至可以使用它来存储指向函数(的地址)的指针。

但请注意,您最初已标记问题 。在 64 位长模式下,指针不是 32 位,而是 64 位。因此,您不能使用 DWORD 来保存另一个变量的地址/指针/偏移量。相反,您需要使用QWORD,它是一个字,长度为64位,与指针大小相同。

关于assembly - "DWORD can be used to declare a variable that contains the 32-bit offset of another variable"是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44664616/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com