为了账号安全,请及时绑定邮箱和手机立即绑定

如何使这个 Wasm 函数在其母语中易于阅读?

如何使这个 Wasm 函数在其母语中易于阅读?

喵喔喔 2022-07-15 09:57:58
我有以下 Wasm 函数,我想了解它是某种 webgl 片段着色器:func $frag_shader (param i32)(local i32 i32 i32 i32 i32)  global.get 0  i32.const 32  i32.sub  local.tee 1  global.set 0  local.get 1  i32.const 16  i32.add  i32.const 1049267  i32.const 85  call 23  local.get 1  i32.load offset=16 align=4  local.set 2  block    block      block        block          local.get 1          i32.load offset=20 align=4          local.tee 3          local.get 1          i32.load offset=24 align=4          local.tee 4          i32.ne          br_if 0          local.get 2          local.set 5          local.get 3          local.set 4          br 1        end        local.get 3        local.get 4        i32.lt_u        br_if 1        block          local.get 4          br_if 0          i32.const 0          local.set 4          i32.const 1          local.set 5          local.get 3          i32.eqz          br_if 1          local.get 2          call 61          br 1        end        local.get 2        local.get 3        i32.const 1        local.get 4        call 52        local.tee 5        i32.eqz        br_if 2      end      local.get 1      i32.const 8      i32.add      local.get 5      local.get 4      call 49      local.get 0      local.get 1      i64.load offset=8 align=8      i64.store offset=0 align=4      local.get 1      i32.const 32      i32.add      global.set 0      return    end    i32.const 1049136    call 25    unreachable  end  local.get 4  i32.const 1  i32.const 0  i32.load offset=1050388 align=4  local.tee 1  i32.const 1  local.get 1  select  call_indirect 4  unreachableend我熟悉javascript,但这对我来说是无法理解的。找出如何将其转换为更“友好”的 javascript 的最佳选择是什么?有没有工具可以帮助转换为更好的格式?或者有没有更容易理解的方法?
查看完整描述

2 回答

?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

您似乎在要求反编译器,这是一种将编译器生成的低级代码转换回源级代码的工具。反编译器通常用于逆向工程。

我不知道目前有任何用于 Wasm 的反编译器。此外,您首先需要知道或猜测最初开发此代码的源语言。


查看完整回答
反对 回复 2022-07-15
?
慕斯709654

TA贡献1840条经验 获得超5个赞

所以你所拥有的是类似于 WAT 的东西,它是 WASM 文本格式。但是它不是有效的 WAT,所以我不确定你能用它做什么。

如果它是有效的 WAT,您可以使用WebAssembly Binary Toolkit中的 wat2wasm 将 WAT 转换为二进制 WASM,然后使用 wasm2c 将其转换为半可读的 C。


查看完整回答
反对 回复 2022-07-15
  • 2 回答
  • 0 关注
  • 159 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号