栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

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

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

一、基本的开发

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1004703.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号