web assembly(wasm)会有自己的语法吗?

3ey*_*ven 5 c++ assembly webassembly

我听说W3正在研究网络的字节码,网页汇编(wasm)会有自己的语法,如nasm和masm吗?比如打字之类的东西,

 global _main
extern _MessageBoxA@16
extern _ExitProcess@4

section code use32 class=code
_main:
    push    dword 0      ; UINT uType = MB_OK
    push    dword title  ; LPCSTR lpCaption
    push    dword banner ; LPCSTR lpText
    push    dword 0      ; HWND hWnd = NULL
    call    _MessageBoxA@16

    push    dword 0      ; UINT uExitCode
    call    _ExitProcess@4

section data use32 class=data
    banner: db 'Hello, world!', 0
    title:  db 'Hello', 0
Run Code Online (Sandbox Code Playgroud)

在nasm for windows

或者它只能从C/C++和其他语言编译而创建?

JF *_*ien 13

WebAssembly的当前工作原型已经具有语法,该语法也由WAVM后端使用的LLVM后端(CHECK:这些测试的部分)发出.另见ilwasmWABT.

这是官方的,最终的文本语法吗?不,但它可能会在稍后成为正式(2017年3月更新:这可能很快就会发生).

当前的WebAssembly二进制格式是一个堆栈机器,它与WebAssembly采用的原始AST方法相比发生了重大变化.s表达式本身并不适合表示堆栈计算机,但它们足够好,简单,并且避免无休止的冲突.


原始答案:

它具有WebAssembly的重要属性,表示为s表达式,它本身具有表达式树,这是AST设计的关键部分.它还具有结构化控制流(AST),而不是大多数编译器IR具有的(CFG).

还有其他原型语法吗?是! 与V8原型密切配合的wassembler具有完全不同的语法.

为什么另一种语法比s表达式?大多数开发人员都更熟悉类C语法!它并不像二进制格式所包含的那样接近,但它仍然非常接近并且使用起来更好.

为什么这么复杂?阅读要理解的文本格式描述很有用.工作仍在进行中,最后WebAssembly的重要部分是二进制格式:它是所有工具将交换的内容,以及将使用的浏览器.那为什么甚至可以使用文本格式呢?我们是工程师,我们更容易使用文本.我们可以在以后查阅它,文本格式的主要目标是人类的理解,我们需要更多的人来判断我们创建的文本是否可以理解.