我想知道如何在高级别使用 LLVM 进行源代码到源代码的转换。鉴于 LLVM 将 while 循环转换为使用 br
等,我想知道如何获取特定的 IR block 并将其返回 转换为 while 循环作为 JavaScript。
C while loop -> LLVM IR -> JavaScript while loop
This article建议 Emscripten 将 LLVM 代码转换为 JavaScript,因此它可能会在某处处理此问题。
我想知道转换它的一般策略,如果有的话。从远处看似乎有点棘手,从 IR 中找出语句来拼凑一个 while 循环。
最佳答案
在从 C 到 LLVM IR 的转换过程中,被认为必要的指令可以用元数据修饰,然后可以使用该元数据将 LLVM IR 转换为 JavaScript,例如指示基本 block 之间的循环分支是 while 循环还是not(此信息存在于 C 上下文中)。参见 Intrinsics & Metadata Attributes .
有关 LLVM 元数据的更多信息,请参阅 LLVM-Metadata .
关于javascript - 如何将 LLVM IR br 转换回 while 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50539278/