Clang 为WebAssembly创建程序集数据节
我有一个汇编数据部分,我想编译成WebAssembly。数据部分是自动生成的,布局必须在输出中完全匹配。这是气体组件中部分数据的外观:Clang 为WebAssembly创建程序集数据节,clang,webassembly,llvm-ir,Clang,Webassembly,Llvm Ir,我有一个汇编数据部分,我想编译成WebAssembly。数据部分是自动生成的,布局必须在输出中完全匹配。这是气体组件中部分数据的外观: 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_004a1
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的工作的一部分,这就是分区布局必须匹配的原因。clang支持从
.S
(预处理)或.S
(未预处理)程序集文件生成wasm对象。我必须查看汇编解析器或LLVM的源代码才能理解语法选项
- 使用此指令启动数据部分(需要
部分以避免语法错误?),@
- 定义所有外部符号或函数的类型(可以在此处找到可能的类型:)
- 为每个定义的符号指定一个大小
.global my_defined_symbol my_defined_symbol: .size my_defined_symbol, 4 .byte ...
.functype extern_func (arg1, arg2, ...) -> (return)
.globaltype extern_global_var type
.global my_defined_symbol
my_defined_symbol:
.size my_defined_symbol, 4
.byte ...