2017-06-22 153 views

回答

2

所有的uintN,varuintNvarintN都是WebAssembly的binary format獨有的概念。它們純粹是以緊湊的機器可讀格式對WebAssembly進行編碼。

i32和朋友是language typessemantics of WebAssembly有更好的描述這些類型以及它們如何相互作用。基本上,它們存在於語言級別,並形成WebAssembly程序中可用的基本數據類型。

他們在兩個完全不同的層次。這有點像C int與用於C源代碼的ASCII編碼。一種純粹在語言層面,另一種純粹用於以穩定格式表示該語言(對於C:源.c文件;對於WebAssembly:二進制.wasm文件)。

「類型構造函數」只是對應於二進制格式中特定二進制值的類型:您需要一些二進制值,您可以使用它們對每種類型進行編碼。回到我的C源代碼示例,源字符大寫字母B將以ASCII碼編碼爲0x42。那麼這裏WebAssembly i32類型被編碼爲字節0x7f

+0

根據我的理解,如果我在wasm二進制文件中找到一個字節'0x7f',這意味着這個地方必須有某種整數值? – YHSPY

+0

謝謝!我想我明白這一點。 :) – YHSPY

+0

不,如果您發現'0x7f',這可能意味着很多事情,因爲WebAssembly格式是可變長度編碼。取決於上下文,「0x7f」可能意味着不同的事情。這與x86中的相同,每個字節可能意味着不同的事情,具體取決於正在解碼的指令。 –

相關問題