指令替换
项目需求:将加法指令替换为减法
项目目录如下
- /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指令
[code]#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" // |