簡體   English   中英

在 64 位架構上讀取/寫入 32 位數據類型

[英]Reading/writing 32-bit data types on a 64-bit architecture

我有一個不清楚的問題,我需要對此進行更多說明。 當我存儲數據類型時,如 integer 4 字節。 那么具有 64 位架構的處理器如何讀取或寫入大小為 4 字節的 integer,因為我知道處理器讀取/寫入一個字。 這里有填充尺寸嗎? 我將感謝對此的一些澄清,因為我不明白它是如何工作的,或者我可能錯過了一些我必須閱讀更多關於它的東西。 它是否因編譯器而異或語言與語言不同? 非常感謝。

據我所知,處理器讀/寫一個字

面向字的 CPU 可以加載/存儲 64 位塊,但也可以是更窄的塊。 (存儲寄存器的低位部分,或加載零擴展或符號擴展)。 進行窄存儲的能力對於為大多數硬件編寫設備驅動程序以及實現不會浪費大量緩存占用空間的有效大小的整數以及某些類型的字符串處理來說是相當重要的。

一些 CPU(如 x86-64)根本不是真正的面向字的,並且對於每個操作數大小都具有大致相同的效率。 盡管 x86-64 機器代碼中的默認操作數大小是 32 位。

所有主流的 64 位架構本身都支持 32 位操作數大小,甚至包括激進的 64 位並且選擇不提供 8 位或 16 位加載/存儲的 DEC Alpha。 (有關詳細信息,請參閱現代 x86 硬件是否不能將單個字節存儲到 memory?

可能有一些非常模糊的 64 位架構,其中只有64 位加載/存儲是可能的,但這似乎不太可能。 另請注意,大多數現代 64 位 ISA 都是從 32 位 ISA 演化而來的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM