在64位架构上读取/写入32位数据类型

问题描述

我有一个不清楚的问题,我需要对此进行更多的澄清。当我存储数据类型如整数4字节时。然后,我知道处理器读取/写入一个字时,具有64位体系结构的处理器如何读取或写入4字节大小的整数。这里有任何填充大小吗?我将为此作出的一些澄清表示感谢,因为我无法理解它是如何工作的,或者我错过了一些我必须阅读更多有关它的内容。不同的编译器或不同的语言有何不同?非常感谢。

解决方法

据我所知处理器读/写一个字

面向字的CPU可以加载/存储64位块,但也可以存储更窄的块。 (存储寄存器的低部分,或以零扩展或符号扩展加载)。对于大多数硬件编写设备驱动程序,以及实现有效大小不浪费大量缓存占用空间的整数以及某些类型的字符串处理,执行狭窄存储的能力是至关重要的。

某些CPU(例如x86-64)根本不是真正面向单词的,并且每种操作数大小的效率都差不多。尽管x86-64机器代码中的默认操作数大小为32位。

所有主流的64位体系结构本机都支持32位操作数大小,甚至包括DEC Alpha,后者积极地使用64位,并且选择不提供8位或16位加载/存储。 (有关更多详细信息,请参见Can modern x86 hardware not store a single byte to memory?

可能有一些非常晦涩的64位体系结构,可能仅 64位加载/存储,但这似乎不太可能。另外请注意,大多数现代64位ISA都是从32位ISA演变而来的。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...