javascript - 如何将 LLVM IR br 转换回 while 循环

标签 javascript c llvm emscripten

我想知道如何在高级别使用 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/

相关文章:

llvm - LLVM 构建中的 *.inc 文件是什么

c++ - MacOS clang 通过 Homebrew 在 Mojave `wchar.h` 下损坏

javascript - 在 Javascript 中使用 if else

javascript - Jquery 事件日历和 Microsoft Azure 问题

javascript - Javascript 是否等待 Websocket "send"命令完成?

javascript - 使用 JavaScript 将秒转换为 HH-MM?

c - memcpy 性能与字节移位

c - 获取母函数 __FILE__

c - 如何让 getchar() 不能得到我之前做的 ENTER?(在 C 中)

iphone - 预编译 prefix.pch 时出现奇怪的编译器警告