编译到网上

时间:2017-09-20 09:47:10

标签: web compilation webassembly

WebAssembly将代码编译成什么格式?

来自官方网站:

WebAssembly or wasm is a new portable, size- and load-time-efficient format 
suitable for compilation to the web.

1 个答案:

答案 0 :(得分:4)

WebAssembly被编译为二进制格式,并且通常以二进制格式分发。

例如,这是一个简单的C函数:

int increment(int input) {
  return ++input;
}

编译如下:

00000000: 0061 736d 0100 0000 0106 0160 017f 017f  .asm.......`....
00000010: 0302 0100 0404 0170 0000 0503 0100 0107  .......p........
00000020: 1602 066d 656d 6f72 7902 0009 696e 6372  ...memory...incr
00000030: 656d 656e 7400 000a 0901 0700 2000 4101  ement....... .A.
00000040: 6a0b   

您可以在WebAssembly design documents中找到此二进制编码的规范。

但是,如果要查看已编译的输出,可以使用wasm2wast工具将其转换为更易读的文本格式(S表达式)。这是相同的代码:

(module
 (table 0 anyfunc)
 (memory $0 1)
 (export "memory" (memory $0))
 (export "increment" (func $increment))
 (func $increment (param $0 i32) (result i32)
  (i32.add
   (get_local $0)
   (i32.const 1)
  )
 )
)