【发布时间】: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