gpt4 book ai didi

c++ - 当它不在 cpu 寄存器中时,是否可以将具有两个高阶零字节的指针存储为 WORD?

转载 作者:太空宇宙 更新时间:2023-11-04 15:27:55 25 4
gpt4 key购买 nike

在指针大小为 4 字节的系统上,当其目的只是寻址可由两个字节(较低部分)寻址的内存部分时,是否可以将指针存储为两个字节的 WORD 而不是在某些 cpu 寄存器中?我看不出有什么方法可以假设我们通过声明一个指针来得到任何像“twoBytes”这样的单词:

char * pointer = reinterpret_cast<char *>((unsigned int)(twoBytes))

我们正在引入一个全新的 4 字节实体,它将被保存为 4 字节实体。

最佳答案

通常您可以存储,但是恢复原始指针值所需的信息很少,所以是的,您可以,尽管它超出了语言提供的保证范围(您需要确定您的特定编译器如何处理重新解释转换)。

但是,例如对于 Windows,您唯一可以确定的是 32 位指针的高位字对于用户代码而言是非零(空指针除外)。这隐含在 Windows API 宏中,如 MAKEINTATOM .如果最高有效字可能为零,则 API 无法可靠地区分表示小整数的指针和指向文本字符串的指针。

因此,一般来说,除非您正在进行内核编程,否则以这种方式进行优化不会给您带来任何好处。此外,节省几个字节并不值得增加复杂性。

干杯,

关于c++ - 当它不在 cpu 寄存器中时,是否可以将具有两个高阶零字节的指针存储为 WORD?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4098261/

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