在浏览器中运行LLVM程序集

2020-08-10 06:03:24

按下按钮可以看到它编译并运行一个很小的hello world程序。您还可以尝试修改LLVM程序集并再次按下按钮-请注意,尽管LLVM程序集是键入的,因此如果您向字符串添加字符,例如,您将需要调整其长度,无论是定义它的位置还是使用它的位置(否则您将收到错误,错误将显示在输出区域中)。

目标三元组=";i386-PC-linux-gnu";@.str=私有常量[15 x i8]c";hello,world!\0A\00";定义I32@Main(){entry:%str=getelementptr inbound[15 x i8]*@.str,I32 0,I32 0%call=call I32(i8*,...)*@printf(i8*%str)。

此演示使用由Emscripten从C++到JavaScript编译的LLVM工具链的一部分(llvm-dis和llvm-as)来检查程序集是否有错误,并对其进行美化打印。然后在输出上运行Emscripten编译器(最初用JavaScript编写,但从正常的批处理/shell模式移植到浏览器环境),并直接执行代码。

此演示是在假日期间作为一个有趣的黑客项目完成的,因此有一些警告:生成的代码根本没有优化,因此基准测试毫无意义;如果您想进行基准测试,请使用-O2正常运行Emscripten。编译速度也根本没有优化。此外,这个演示几乎没有经过测试,并且以不是最初打算的方式将几个代码库粘合在一起,可能会有一些东西不起作用。