【问题标题】:How can I inspect x86/x64 code generated by V8 from WebAssembly?如何从 WebAssembly 检查 V8 生成的 x86/x64 代码?
【发布时间】:2020-04-24 19:30:24
【问题描述】:

https://webassembly.studio/ 允许检查 WebAssembly (WASM) 文件和相应的 SpiderMonkey 生成的 x86 代码。 我想同样检查 V8 的 WASM 编译器(Liftoff 和 TurboFan)生成的指令

我对 V8 的代码库/API 完全不熟悉(不过,我编译并链接了它并遵循了一些教程)。似乎有一个 v8::CompiledWasmModule 类可用,但它似乎没有公开通过 Liftoff 或 TurboFan 访问生成的 x86/x64 指令。

WebAssembly - adding a new opcode 描述了将 WASM 操作码添加到 V8 的过程。上述类中提供了看似适合 WASM 编译/执行的函数。不过,这些似乎在 V8 代码库中分层很深,如果我将 V8 链接为库,将很难访问。另外,我不确定这是否对应于 Liftoff 或 TurboFan。

任何熟悉 V8 代码库的人能否给我一些关于如何访问 Liftoff 和/或 TurboFan 的 WebAssembly 编译模块以获取 x86/x64 代码的指示?

【问题讨论】:

    标签: v8 webassembly embedded-v8


    【解决方案1】:

    要检查生成的代码,您可以运行带有--print-wasm-code 标志的d8 shell。您需要一个调试版本,或者带有 v8_enable_disassembler = true GN 参数的发布版本。

    目前没有通过 V8 的 API 检索生成的代码的方法;所以如果这就是你想要的,那么你必须添加它。请记住,V8 并非设计为独立编译器,这意味着生成的代码假定它将在“V8 内部”运行,因此如果您想将其用于其他任何事情,则必须进行重大修改。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-10
      • 2015-10-12
      • 2012-07-26
      • 1970-01-01
      相关资源
      最近更新 更多