跳轉到內容

鸚鵡虛擬機器/Packfiles

來自 Wikibooks,開放世界中的開放書籍

Packfiles

[編輯 | 編輯原始碼]

鸚鵡位元組碼檔案在內部被稱為“packfiles”。從 packfile 獲取資訊和向 packfile 提供資訊的訪問例程儲存在 /src/packfile.c 中。

一些可能影響檔案儲存方式的事項是

  1. 位元組序。有些計算機被稱為“小端”,而有些計算機被稱為“大端”。這與位在位元組中排列的方式有關。沒有選擇其中一種作為預設值。
  2. 值大小。諸如指標和 INTVAL 之類的東西在不同的計算機上會有不同的尺寸。鸚鵡必須在這些值和其他值之間進行 16 位、32 位和 64 位值的轉換。此外,FLOATVALS 可能為 32 位、64 位或 128 位,需要進行轉換。

序列化

[編輯 | 編輯原始碼]

HLL 程式碼最常用於首次編譯它的計算機上。為此,鸚鵡經過最佳化,可以使用本地設定寫入 packfiles。如果讀取在其他計算機上建立的 packfile,鸚鵡必須在內部對其進行轉換,以便它可以在您的計算機上執行。此轉換過程會增加額外的執行開銷,但只需要在您的計算機上執行一次即可將資料轉換為正確的本地格式。

凍結和解凍

[編輯 | 編輯原始碼]

序列化透過兩個介面進行:凍結和解凍。凍結是將 PMC 或其他型別的資料轉換為適合插入 packfile 的格式的過程。解凍是從 packfile 中讀取資料並重新建立 PMC 或其他資料物件的過程。PMC 有可選的凍結和解凍 vtable 方法,雖然如果 PMC 不使用任何額外的儲存,則可以使用良好的預設值。如果您使用額外的儲存,特別是使用 malloc 從系統分配的儲存,則必須提供自定義的凍結/解凍方法來儲存和檢索它。

華夏公益教科書