【问题标题】:create assembly data section for WebAssembly为 WebAssembly 创建程序集数据部分
【发布时间】:2021-04-25 18:57:29
【问题描述】:

我有一个程序集数据部分,我想编译为 WebAssembly。数据部分是自动生成的,并且布局必须在输出中完全匹配。这是 GAS 组装中部分数据的样子:

sym_00497658_11353_5752:
.quad sym_0020ad70_3404_1468903
.quad sym_0020ada0_3404_1468951
.quad sym_00208480_3404_1458423
.byte 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.quad sym_004a1de0_11353_48640
.global sym_00497680_11353_5792
sym_00497680_11353_5792:
.quad sym_00209e90_3404_1465095
.quad sym_0020a590_3404_1466887
.byte 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.quad sym_004a1df0_11353_48656
.global sym_004976a0_11353_5824
...

有没有办法为 WebAssembly 生成这样的数据部分?我考虑过使用 LLVM IR,但我不确定如何确保布局正确。

这是将可执行文件重新编译为 WebAssembly 的努力的一部分,这就是部分布局必须匹配的原因。

【问题讨论】:

  • 布局是指符号内的部分吗?我确信这在 LLVM IR 中是可能的,尽管我不知道具体细节。
  • 不,我的意思是该部分的整个字节布局,只是为了确保它的布局正确。我已经找到了解决方案,我会发布一个答案:)

标签: clang webassembly llvm-ir


【解决方案1】:

clang 支持从 .S(预处理)或.s(未预处理)汇编文件生成 wasm 对象。我必须查看程序集解析器或 LLVM 的源代码才能理解语法选项...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-11
    • 1970-01-01
    • 2016-12-29
    • 2017-11-08
    • 2016-07-30
    相关资源
    最近更新 更多