Reading/writing 64 位架构上的 32 位数据类型
Reading/writing 32-bit data types on a 64-bit architecture
我有一个不清楚的问题,需要更多的说明。当我存储像整数 4 字节这样的数据类型时。那么具有 64 位架构的处理器如何读取或写入大小为 4 字节的整数,因为我知道处理器 reads/writes 一个字。这里有填充尺寸吗?我将感谢对此的一些澄清,因为我不明白它是如何工作的,或者我可能错过了一些我必须阅读更多关于它的东西。它是否因编译器而异或语言与语言不同?非常感谢。
as I know the processor reads/writes a word
Word-oriented CPU 可以 load/store 64 位块,但也可以是更窄的块。 (存储寄存器的低位部分,或使用 zero-extension 或 sign-extension 加载)。进行窄存储的能力对于为大多数硬件编写设备驱动程序、实现不会浪费大量缓存占用空间的有效大小的整数以及某些类型的字符串处理来说是相当重要的。
一些 CPU(如 x86-64)根本不是真正的 word-oriented,并且每个 operand-size 的效率大致相同。虽然x86-64机器码中默认的operand-size是32位的
所有主流的 64 位架构都原生支持 32 位 operand-size,甚至包括积极支持 64 位并选择不提供 8 位或 16 位的 DEC Alpha loads/stores。 (有关详细信息,请参阅 )
可能存在一些非常模糊的 64 位架构,其中 仅 64 位 load/store 是可能的,但这似乎不太可能。另请注意,大多数现代 64 位 ISA 都是从 32 位 ISA 演化而来的。
我有一个不清楚的问题,需要更多的说明。当我存储像整数 4 字节这样的数据类型时。那么具有 64 位架构的处理器如何读取或写入大小为 4 字节的整数,因为我知道处理器 reads/writes 一个字。这里有填充尺寸吗?我将感谢对此的一些澄清,因为我不明白它是如何工作的,或者我可能错过了一些我必须阅读更多关于它的东西。它是否因编译器而异或语言与语言不同?非常感谢。
as I know the processor reads/writes a word
Word-oriented CPU 可以 load/store 64 位块,但也可以是更窄的块。 (存储寄存器的低位部分,或使用 zero-extension 或 sign-extension 加载)。进行窄存储的能力对于为大多数硬件编写设备驱动程序、实现不会浪费大量缓存占用空间的有效大小的整数以及某些类型的字符串处理来说是相当重要的。
一些 CPU(如 x86-64)根本不是真正的 word-oriented,并且每个 operand-size 的效率大致相同。虽然x86-64机器码中默认的operand-size是32位的
所有主流的 64 位架构都原生支持 32 位 operand-size,甚至包括积极支持 64 位并选择不提供 8 位或 16 位的 DEC Alpha loads/stores。 (有关详细信息,请参阅
可能存在一些非常模糊的 64 位架构,其中 仅 64 位 load/store 是可能的,但这似乎不太可能。另请注意,大多数现代 64 位 ISA 都是从 32 位 ISA 演化而来的。