close

之前有讀者問了這麼一個問題:大小端與編譯器和操作系統有關嗎?

其實大小端主要由CPU決定,與編譯器、操作系統這些沒有直接關係。

因為我以前學習的時候,有很長一段時間也是存在這樣的疑問。我覺得應該還有很多人都沒搞明白,所以,今天來分享一下相關內容。

關於大小端

大小端也可以理解為字節順序,或者端序、尾序,也就是你們看到的大端序(Big-Endian)、小端序(Little-Endian)。

關於大小端的解釋網上很多教程,也不難理解。

大端模式:是指數據的高字節保存在內存的低地址中。

小端模式:是指數據的高字節保存在內存的高地址中。


CPU是大小端存儲的決定因素

可能部分初學者被一些外界信息給誤導,從而有這樣的疑惑。

比如:

●操作系統是大端還是小端存儲?

● Keil C51是大端模式,認為與編譯器有關。


你了解大小端之後,你會發現,大小端主要有用於存儲的順序,與存儲器(硬件)關係比較大,編譯器和操作系統僅僅是配合CPU編譯好相應的代碼,而不是決定大小端的因素。

ARM大小端模式

ARM處理器默認是小端模式,但它是支持大端模式。

我們在Cortex-M3手冊中有這麼一些描述:在Cortex-M3中, 存儲器系統支持 both 小端配置和大端配置。


Cortex-M3 支持 both 小端模式和大端模式。但是,單片機其它部分的設計,包括總線的連接,內存控制器以及外設的性質等, 一定要先在單片機的數據手冊上查清楚可以使用的端。在絕大多數情況下,基於 CM3 的單片機都使用小端模式。為了避免不必要的麻煩,基本清一色地使用小端模式。

歸根結底,ARM的大小端模式還是與CPU有關,而與編譯器和操作系統沒有直接關係。

作者:strongerHuang
來源:嵌入式專欄
版權歸原作者所有,如有侵權,請聯繫刪除。

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 鑽石舞台 的頭像
    鑽石舞台

    鑽石舞台

    鑽石舞台 發表在 痞客邦 留言(0) 人氣()