找回密码
 立即注册
首页 业界区 业界 LLVM Pass快速入门(三):指令替换

LLVM Pass快速入门(三):指令替换

杓疠? 2 小时前
指令替换

项目需求:将加法指令替换为减法
项目目录如下
  1. /MyProject
  2. ├── CMakeLists.txt # CMake 配置文件
  3. ├── build/ #构建目录
  4. │   └── test.c #测试编译代码
  5. └── mypass2.cpp # pass 项目代码
复制代码
一,测试代码示例

test.c
  1. // test.c
  2. #include <stdio.h>
  3. int my_add(int a, int b) {
  4.     return a + b;
  5. }
  6. int main() {
  7.     int x = 10;
  8.     int y = 20;
  9.     printf("Result: %d\n", my_add(x, y));
  10.     return 0;
  11. }
复制代码
二,编写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" //

相关推荐

您需要登录后才可以回帖 登录 | 立即注册