webassembly学习——C和C++的使用

5 篇文章 1 订阅

一、基本的开发

在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的是不是好事,还有待于时间的验证。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值