【问题标题】:Mapping WebAssembly binary to its source code将 WebAssembly 二进制文件映射到其源代码
【发布时间】:2021-06-10 12:10:47
【问题描述】:

使用 -g 标志编译 C/C++ 代码会在生成的二进制文件中生成调试信息。特别是有源代码到二进制代码的映射:

add:     file format elf64-x86-64


Disassembly of section .text:

0000000000000000 <add>:
int add(int a, int b) {
   0:   55                      push   %rbp
   1:   48 89 e5                mov    %rsp,%rbp
   4:   89 7d fc                mov    %edi,-0x4(%rbp)
   7:   89 75 f8                mov    %esi,-0x8(%rbp)
        return a + b;
   a:   8b 45 fc                mov    -0x4(%rbp),%eax
   d:   03 45 f8                add    -0x8(%rbp),%eax
  10:   5d                      pop    %rbp
  11:   c3                      retq

用 clang 或 emcc 编译 WebAssembly 有类似的东西吗? 我用这些尝试了-g 标志,但它没有相同的行为。 最后,我想要.wat 代码到 C 代码的映射。

【问题讨论】:

    标签: compilation clang webassembly


    【解决方案1】:

    llvm-objdump -S 的工作方式应该与它对本机目标文件的工作方式相同。

    如果您正在寻找缺少调试信息的代码的漂亮显示,您可能还想查看 wasm-decompile,它是 wabt 项目的一部分。与普通/本机反编译器相比,它能够更好地使某些内容具有可读性。

    【讨论】:

      猜你喜欢
      • 2012-02-04
      • 1970-01-01
      • 1970-01-01
      • 2015-05-26
      • 1970-01-01
      • 2022-10-13
      • 1970-01-01
      • 2012-08-21
      • 1970-01-01
      相关资源
      最近更新 更多