一、基本的开发
在webassembly开发中,有一个好的开发工具其实是最好的。在github等网站上有着相关的本地开发工具,但是需要不断的安装,还有配置。那有没有在线的工具呢。有,那就是Webassembly Studio这个工具。不过说实话,这个还真是没找到,总是各种的注册,而gmail也不知道啥原因,一登录就自动退出。
只好还继续使用原来的两个工具:
https://mbebenita.github.io/WasmExplorer/
https://wasdk.github.io/WasmFiddle/
至于本地工具,大家自己去网上找就可以了。
二、实际例程
看一个实际的例子:
int Test(int a,int b) {
if (a > b)
return a;
else
return b;
}
WAT格式:
(module
(table 0 anyfunc)
(memory $0 1)
(export "memory" (memory $0))
(export "_Z4Testii" (func $_Z4Testii))
(func $_Z4Testii (; 0 ;) (param $0 i32) (param $1 i32) (result i32)
(select
(get_local $0)
(get_local $1)
(i32.gt_s
(get_local $0)
(get_local $1)
)
)
)
)
汇编格式:
wasm-function[0]:
sub rsp, 8 ; 0x000000 48 83 ec 08
mov edx, edi ; 0x000004 8b d7
mov ecx, edx ; 0x000006 8b ca
cmp ecx, esi ; 0x000008 3b ce
setg al ; 0x00000a 0f 9f c0
movzx eax, al ; 0x00000d 0f b6 c0
mov ecx, edx ; 0x000010 8b ca
test eax, eax ; 0x000012 85 c0
cmove ecx, esi ; 0x000014 0f 44 ce
mov eax, ecx ; 0x000017 8b c1
nop ; 0x000019 66 90
add rsp, 8 ; 0x00001b 48 83 c4 08
ret ; 0x00001f c3
这个例子很简单,就是一个求最大值的函数。交其代码拷贝到WasmExplorer中,就可以看到后面的代码。如果想看其它如wasm的代码,可以在github上使用Wat2Wasm(https://github.com/webassembly/wabt)这个本地工具来实现。
三、总结
不应该在Wasm中编写相应的代码来学习相关开发的技术,因为这些代码都是上层的编译器自动生成的。学习wasm重点是掌握其中的原理和设计方式,这样在实际开发中就可以起到画龙点晴的作用。
希望wasm能够在可预见的未来快速的崛起,为广大的开发人员所用。不过,这对搞c++和c的是不是好事,还有待于时间的验证。