llvm-ir

    3热度

    1回答

    我想将这些指令集的一个部分在另一部分在IR %0 = load i32, i32* @x, align 4 %1 = load i32, i32* @y, align 4 %add = add nsw i32 %0, %1 %2 = load i32, i32* @n, align 4 %cmp = icmp slt i32 %add, %2 %c

    2热度

    1回答

    如何确定LLVM模块的所有全局变量? 我想使用模块通过修改它们。

    2热度

    1回答

    我有两个全局结构类型声明,其中一个是另一个的“子类型”。我想定义一个全局变量,更具体的类型,但让全局变量有更多的普通型: 我尝试这样做: %hs = type { %hs* (%hs*)* } %dc = type { %hs* (%hs*)*, i64, [1 x %hs*] } @boring = constant %hs { %hs* (%hs*)* null } ; this w

    0热度

    1回答

    我有我自己的连接器和机器代码converter.I使用我自己的汇编指令为我的machine.This机器是一个软件处理器执行由asm生成机器码到十六进制转换器。而不是汇编,我想现在使用c语言。我的问题是如何使用LLVM来达到这个目的。 一种方法可能是这样的: 创建一个解析器,它将读取由LLVM IR生成的.s文件(各种asm文件),并将这些指令映射到特定于处理器的asm指令。 我不想创建链接器和a

    0热度

    1回答

    我跟着LLVM教程万花筒。现在我试图在这个前端编译器中使用类似于Pascal的语言。我有这样的代码: program main; function rett(): integer; begin rett := 1; exit; rett := 5; end; var a: integer; begin a := rett(); wr

    2热度

    1回答

    我正在学习编写LLVM传递,试图重现hello world示例。通hello.cpp看起来像: #include "llvm/Pass.h" #include "llvm/IR/Function.h" #include "llvm/Support/raw_ostream.h" using namespace llvm; namespace { struct Hello : p

    3热度

    1回答

    我想写一个LLVM传递,它将提取函数调用的参数。如果争论是一个常数,我的目标是恢复常数。 红外看起来像 %2 = call noalias i8* @malloc(i64 512) #3 LLVM的传球看起来像 bool runOnFunction(Function &F) override { for (auto& B : F) { for (auto& I : B)

    0热度

    1回答

    我好不容易用 def ADD_reg3 : InstReg3Simple<0b01000, (outs GPR:$Wd), (ins GPR:$Wb, GPR:$Ws), "add\t$Wb, $Ws, $Wd", [(set GPR:$Wd, (add GPR:$Wb, GPR:$Ws))]> {} 大加两个寄存器!现在我想添加两个'长'数字。 看来,LLVM是足够酷,

    4热度

    1回答

    当我从C++生成LLVM IR代码时,我可以使用控制台命令clang++ -emit-llvm –S test.cpp来获取我想要的LLVM IR的test.ll文件。 为了得到一个可执行这些都是要遵循的步骤: llvm-as test.ll - >给我test.bc文件。 llc test.bc --o test.s - >给我test.s文件。 clang++ test.s -o test.n

    2热度

    1回答

    我想跟着LLVM教程编译器实现,但我的代码段错误,当我尝试发出对象代码。 这是一个极小的例子,它试图编译函数func。为了简单起见,func是一个什么都不做的函数。 #include <iostream> #include <llvm/ADT/Optional.h> #include <llvm/IR/BasicBlock.h> #include <llvm/IR/DerivedTypes.