簡體   English   中英

32位系統上的64 int64_t的字節序

[英]Endianness of 64 int64_t on 32 bits systems

我想知道,如果類型比本機機器字大,並且具有編譯器抽象支持,如32位系統上的int64_t ,那么內存中的字節順序是否有任何規范? 例如,在小端機器上,我們是否應該假設內存布局是一個完整的64位交換順序? 或者像PDP-11一樣可以自由地成為中端?

cf http://en.wikipedia.org/wiki/Endianness#Middle-endian

因為在C99中的int64_t之前__int64(MS)或long long(gcc)不是標准的,所以在這種類型的字節順序上假設有什么東西嗎?

謝謝

為什么標准要在內存中的字節順序上指定任何東西? 在所有情況下,這取決於自由決定的編譯器/架構。 如果您對特定架構感興趣,只需彈出調試器並觀察簡單程序的行為方式。

C是一種可移植的語言,因此對整數類型的實際表示沒有太多假設。 標准甚至允許在值位之間填充填充 有關更多信息,請參見6.2.6.2整數類型

我不認為C標准對字節順序有任何規范。 它依賴於實現。 在實踐中,我認為int64_t的endianess遵循架構的endianess。 因此,即使在32位程序中,int64_t在內存中的存儲也就像它是64位程序一樣。 但是,當寄存器為32位時,可能需要兩條指令來加載/存儲數據。

暫無
暫無

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

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