LLVM Pass快速入门(三):指令替换
指令替换项目需求:将加法指令替换为减法
项目目录如下
/MyProject
├── CMakeLists.txt # CMake 配置文件
├── build/ #构建目录
│ └── test.c #测试编译代码
└── mypass2.cpp # pass 项目代码一,测试代码示例
test.c
// test.c
#include <stdio.h>
int my_add(int a, int b) {
return a + b;
}
int main() {
int x = 10;
int y = 20;
printf("Result: %d\n", my_add(x, y));
return 0;
}二,编写Pass
其他的固定的模板之前文章注释有,这里我只注释当前项目重要的部分
代码流程: 遍历指令并匹配ADD指令->替换为sub指令
#include "llvm/IR/PassManager.h"#include "llvm/Passes/PassBuilder.h"#include "llvm/Passes/PassPlugin.h"#include "llvm/Support/raw_ostream.h"#include "llvm/IR/Function.h"#include "llvm/IR/BasicBlock.h"#include "llvm/IR/Instruction.h"#include "llvm/IR/Instructions.h"#include "llvm/IR/IRBuilder.h" //
页:
[1]