我正在尝试将 llvm-ir 文件交叉编译为汇编,或者更好地为使用 llc 编译器的 ARM Cortex M4 微处理器生成 object 文件。 为此,我必须指定哪些参数? 我试过这个命令llc -mtriple=armv7m-eabi -mcpu=cortex-m4 file.ll -o f ...
我正在尝试将 llvm-ir 文件交叉编译为汇编,或者更好地为使用 llc 编译器的 ARM Cortex M4 微处理器生成 object 文件。 为此,我必须指定哪些参数? 我试过这个命令llc -mtriple=armv7m-eabi -mcpu=cortex-m4 file.ll -o f ...
我一直在尝试使用 emscripten 将 C 构建到 WASM 和 Javascript 中。 Emscripten 需要 clang,所以我安装了它,但是当运行 emcc 和 em++ 时,它显示“emcc: error: llc executable not found at C:\\Pro ...
我正在尝试在我的 C 编译器项目中使用来自 llvm 的 llc 命令,但我不知道如何使用它。 我尝试在 cmake 中链接 llvm 库,但如果我想要llc ,我不知道要链接哪些库。 任何帮助都可以,谢谢! ...
尝试链接一些 IR 文件时,我遇到了llc的下一个错误: 我发现如果我在编译期间禁用 clang 优化( O0 ),则不会弹出错误,但我不想这样做我附上了如何重现它的示例,只需cd 'issue' 文件夹并运行 'issue.sh' 来重现错误。 你必须有 Xcode(12.x 首选)你运行它 h ...
我使用 python 创建自定义编程语言,PLY 作为词法分析器和解析器,LLVMlite 作为低级中间语言来进行代码生成。 我已经使用 Python pip 安装了 PLY 和 LLC 我使用LLC创建一个object文件output.o和GCC创建最终的可执行文件如下。 当我执行llc -fil ...
我有一个简单的 c 代码:// main.c #include <stdio.h> void foo() { } int main() { return 0; } 以下命令的 Output 我得到: 这是预期的。 foo() function 已转换为retq指令。 但 ...
我试图找到一个命令行选项来为 llvm 指定“为您正在编译的主机生成代码,它应该利用所有可用的 CPU 功能,并且不需要在任何其他系统上运行”。 我在我使用的所有平台上都有相当新的 llvm 版本,它们都是 arm、arm64、x86 或 x86-64。 所有代码都是 C 或 C++。 llvm ...
我正在尝试稍微改变 X86 目标的 LLVM 后端,以产生一些所需的行为。 更具体地说,我想模拟一个像 gcc 的 fcall-used- reg 选项这样的标志,它指示编译器将被调用者保存的寄存器转换为损坏的寄存器(意味着它可能会在函数调用期间被更改)。 让我们关注r14 。 我手动破坏了寄存 ...
下面的 bitcast 指令向我抛出了一个 Illegal Bitcast 错误,有人能指出问题是什么吗? ...
我的英语水平很差,因为我的母语不是英语。 我使用 llc.exe 编译了一个位码并获得了一个 .s 文件(test.s)。 我用来创建 test.s 的命令如下。 是的,我的目标板是 cortex-m3(stm32l 系列),我创建了如下的 makefile 来创建 .bin 文件。 m ...
我一直在尝试使用 llvm 进行代码生成。 我目前正在尝试为变量声明生成 IR。 这是一个例子: let sum: float = 8 * 3 * 4 + 6 * 9; 当我为此生成 IR 时,这就是我得到的: 首先,这看起来很混乱,我相信这可以更有效地完成。 但我认为我可以稍后通过优化来修复它。 ...
我需要调试我正在开发的MachineFunctionPass 。 我的目标是x86架构。 如何从MachineInstr实例中检索目标反汇编? 示例MachineInstr表示 预期的反汇编(英特尔语法) ...
我正在运行Ubuntu 18.04。 我正在尝试编译llvm代码,使用: llc-7 prog.ll -o prog.s然后clang-7 prog.s lib.a -o prog.exe 。 如果您认为有帮助,我可以提供任何代码。 我非常肯定库lib.a的有效性。 我也尝试过clang ...
尝试查看在指令选择阶段使用LLVM(从启用了调试模式的源构建)生成的SelectionDag节点时,我使用的是以下命令,该命令未创建Graphviz DOT文件。 相反,它正在创建sum.s文件。 我在这里想念什么吗? sum.c sum.bc LLVM信息 ...
我通过包管理器在我的计算机上安装了llc程序(当然我安装了 LLVM,6.0.0 版本)。 另外,我是从源代码构建的。 我想要的是查看由 llvm 生成的 DAG。 但是,不幸的是,我在llc两个版本上都没有任何选项,例如-debug 、 -view-dag-combine1-dags等。 这让我发 ...
我在OSX上运行,并尝试将以下C代码编译为webAssembly: 我看了这个示例,并尝试运行以下命令: 第一个命令运行良好,clang生成.bc文件,但是当我尝试运行第二个命令时,我得到: llc: : error: unable to get target for 'wasm ...
我想知道真实寄存器中的变量依赖性(例如X86:EAX,EBX ...)。 因此,我创建了一个IR-PASS,可以识别对IR的依赖性。 此过程使用新添加的变量unsigned HasDependency: 1; 和unsigned HasMaybeDependency: 1; 在Value ...
我转换以下llvm-IR 使用llc sample.ll生成x86_64-unknown-linux-gnu汇编代码,生成汇编代码: 上面代码中的寄存器: %rbp是基指针,它指向当前堆栈帧的底部, %rsp是堆栈指针,它指向当前堆栈帧的顶部,并且操作数存储在%eax和%al用于 ...
问题 llc给我以下错误: LLVM错误:符号上不支持的重定位 详细的编译流程 我正在为编译器的中级IR(MIR)实现LLVM前端,并将各种方法转换为许多位代码文件后,将它们链接( llvm-link ),对其进行优化( opt ),将其转换为机器代码( llc ) ...
我想使用 LLVM IR 并安装了最新的 LLVM v4(在我的 Windows PC 上),但我在已安装的文件中找不到 llc(在“bin”文件夹和所有其他文件中查找)。 想知道这个工具是否不可用,或者它是否已被弃用或什么? 这是我的 bin 文件夹的内容: 2017 年 4 月 30 ...