杓疠? 发表于 2 小时前

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]
查看完整版本: LLVM Pass快速入门(三):指令替换