RFC-0030:FIDL 很少

RFC-0030:FIDL 為小端
狀態已接受
區域
  • FIDL
說明

聲明 FIDL 為較小的端子。

作者
提交日期 (年/月)2019-01-30
審查日期 (年/月)2019-01-30

摘要

聲明 FIDL 為較小的端子。

提振精神

透過指定且可移植的字尾,將 FIDL 移至更接近可持續性的格式。

初始設計特別選擇主機記憶體順序 (和表示法),避免在傳輸期間使用任何需要竊聽記憶體的情況。這個金鑰可將 FIDL 訊息安全地顯示為 C 結構。然而,我們也瞭解到不久後,在大端機器上執行 Fuchsias 的可能性很小,因此將 FIDL 設為較小的端子是一個實際決定。

設計

目前 FIDL 記錄到使用主機端層,但所有現有主機都是少量的主機。為了移至可序列化的 FIDL 子集,我們提議宣告 FIDL 目前並不多 (這對於說明文件清理而言)。

如果需要支援大型端平台,許多其他程式碼和說明文件需要更新,並提議當下處理 FIDL 的任何變更。

導入策略

準備 CL 以變更 FIDL 說明文件。

擷取預期只能在小端機器上做為程式碼宣告的預期。

人體工學

人體工學沒有改變。

說明文件與範例

僅變更規格。

回溯相容性

目前沒有異動。 將限制未來大端裝置的 FIDL 需要進行一些微調 (對於永久性資料結構而言極少)。

效能

目前成效不會改變。 當我們支援大端平台時,可能必須修訂 FIDL 修訂版本。

安全性

安全性不會有任何改變

測試

測試沒有任何變更。

缺點、替代方案和未知

替代做法有兩種:

  1. 不提供序列化功能,但這會限制 FIDL 在某些情況下的適用性。
  2. 提供單獨的可持續使用格式,但這樣會產生需要隨處支援的次要序列化路徑。

附加條款

雖然將 FIDL 修正為微端子的技術決策不特別具爭議性,如同許多事物,但長時間發出執行緒。從中瞭解到:

  • MIPS 用於執行 BE 和 LE,這取決於您重設處理器時您時鐘進入處理器的 init 向量 (很久以前在 MIPS 有案件,以及何時可以購買獨立的 MIPS CPU)。部分產品甚至在重新啟動後,也會更換為裝置的尾端 (請勿詢問原因)。

    雖然 MIPS 不再是內容的主要項目,但我們預期閘門嵌入在 SoC 中,且終端性可能固定 (且可能固定不長)。

  • 所有 ARM 核心都會實作大型和小端子。

    arm64 可在 SCTLR 中為每個 EL 選取。你可以在例外層級轉換時切換結尾模式。

    arm(32) 透過 SETEND 指示選取。在執行階段期間,這項功能可以隨時切換端點。您的編譯器不太可能支援這項功能,但對於某些手動編寫的組合來說,這是很實用的做法。

  • IEEE 802.11 僅有少量的端點,802.11 流量的管理和控制層在其領域採用極小的端子。所有封裝的通訊協定都仍是大型端點,而 802.11 堆疊在處理中。

    Xerox 發明乙太網路後,歷史可追溯至 1982 年。 WLAN 大多會繼承這項決定。為何要選擇小終點?這是任意選擇:

    「乙太網路本身在解讀 8 位數二進位數值的數字時,對八個位元的位元表達也完全沒有影響。由於某些統一慣例很有用,但為了避免不同車站類型之間無謂不相容的問題,則解譯是「任意定義」,也就是「資料連結層:最左邊的位元 (首次傳輸)」是低順序 (2^0) 位數,而最右側 (最先傳輸的) 是

圖:資料層頁框格式

  • USB 為小端子。

  • 益智問答:MAC 位址不受位元組排序影響,但如果位址是大端序,在 IP 轉送處理常式中絕對會具有幾個循環... 甚至可能會以位元組由位元組 (約 1 毫秒) 的遠處 1 Mbps 連結方式啟動低延遲「延遲」轉送。

  • 趣味小知識:FAT 檔案系統大多使用小端序,但標頭中的項目並非全部。如果整個 FAT 啟動部門 (以大端為單位) 的總和檢查碼為 0x1234,則 FAT 檔案系統可以做為 Atari ST 上的 m68k 處理器可開機裝置,這表示目前年份實際上仍為 1985。

  • 趣味小知識:還有一些標準 GCC 定義中端和附註:

    「如果 __BYTE_ORDER__ 等於 __ORDER_PDP_ENDIAN__,則 16 位元字詞中的位元組會以小端子的方式呈現,32 位元數量的 16 位元子字詞則以大端序排列。」