鸽子王带你玩wasm

简介: 鸽子王带你玩wasm

猿人学第十五题也出来啦

题目链接:http://match.yuanrenxue.com/match/15

十五题是一个WebAssembly类型简称wasm 看看介绍

下面 就由鸽子王小林弟弟来带你们玩




常规操作 先下一个XHR断点

然后堆栈找m的来源

能看到这里有加载了一个main.wasm 这就是我们今天的主角了

逻辑很清晰 但是 window.q是啥呢 要咋调用呢?咋玩呢?



无需担心 跟着我来

俩种玩法

node

由于node是支持WebAssembly的 所以直接导入wasm改写原来的代码就可以直接调用了

我直接手动把main.wasm文件转为Uint8Array

然后把手动改写代码

自己手敲一下理解一下


python

先装一个python-wasmer库

GitHub地址:https://github.com/wasmerio/wasmer-python

$ pip install wasmer==1.0.0a3
$ pip install wasmer_compiler_cranelift==1.0.0a3

GitHub里面就有使用方法

根据GitHub给出的方法再结合上网页上的使用方法

改写成python就是

顺便记一个小坑

Tips

如果安装好wasmer后运行不了

ImportError: Wasmer is not available on this system

经过咨询和观察 发现是python版本的问题 虽然作者说支持3.9 但是亲测不行

所以我手动将版本回滚到3.79 再次pip install wasmer后运行正常了

就这问题卡了我2个小时....害




最后Python运行

完美撒花 感谢各位大佬观看







[完]

相关文章
|
Rust JavaScript 前端开发
【Rust 实战】Rust 与 Wasm
【Rust 实战】Rust 与 Wasm
2374 0
【Rust 实战】Rust 与 Wasm
|
Web App开发 存储 JavaScript
使用AssemblyScript 构建 WebAssembly 应用
WebAssembly,也称为 Wasm,是为 Web 创建的二进制格式。它允许通过从常规 JavaScript 访问的相同 Web API 访问浏览器功能。
767 0
使用AssemblyScript 构建 WebAssembly 应用
|
Web App开发 缓存 移动开发
V8 JS AOT化的探索与实践
JS 语言的动态性非常优秀,其弱类型等语言特性也使得一线业务开发者更容易上手,但这也导致 JS 每一次运行前都要重复编译,使得 JS 的执行性能不理想;虽然之前 UC 内核有做过 Code Cache 方案,但支持的场景不够完整,与原生 Native 的技术方案比,尤其是首次启动场景(如各类大促活动等)还是有比较大的差距。为了能尽可能做到与 Native 对标,缩小性能差距,同时让业务开发者无感,我们开发了 JS AOT 功能。本分享将结合目前集团内自有业务形态,以及 JS 在 Web 中的执行过程,介绍JS AOT是如何设计和实现的,以及能给业务带来哪些收益。本篇分享来自阿里巴巴的喻世江在第
2285 0
V8 JS AOT化的探索与实践
|
Rust 前端开发 JavaScript
Rust 编译为 WebAssembly 在前端项目中使用(二)
Rust 编译为 WebAssembly 在前端项目中使用(二)
264 0
|
开发框架 Rust JavaScript
WebAssembly
关于使用和推荐方面,由于缺乏关于 Grain 语言的详细信息,我无法为您提供确切的建议。如果您需要关于 JavaScript 和 WebAssembly 的建议,我可以为您提供一些建议:
157 3
|
Rust 前端开发 JavaScript
Rust 编译为 WebAssembly 在前端项目中使用(一)
Rust 编译为 WebAssembly 在前端项目中使用(一)
165 0
|
Rust 安全 C#
c#如何使用WASM跨语言调用?
c#如何使用WASM跨语言调用?
141 0
c#如何使用WASM跨语言调用?
|
C# 网络架构
Blazor_WASM之4:路由
Blazor_WASM之4:路由
160 0
|
Rust JavaScript 前端开发
【Rust 实战】Rust 与 Wasm (2) —— 操作 Dom
【Rust 实战】Rust 与 Wasm (2) —— 操作 Dom
【Rust 实战】Rust 与 Wasm (2) —— 操作 Dom