IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> LLVM Pass中的指令写到文件中 -> 正文阅读

[C++知识库]LLVM Pass中的指令写到文件中

最近在做LLVM有关的项目,需要将LLVM Pass中的部分结果写到文件中。网上找了半天,都没有教程,看了很多源码,只有很多用errs()和out()函数打印信息到屏幕的,也试过用 tee 命令将ubuntu命令行输出写到文件,可是出现了乱码。
最后在高人指点下,经过自己半天的摸索终于解决了。

key word: raw_fd_ostream, StringRef, error_code

1. 头文件准备

需要的头文件为:

#include "llvm/Support/raw_ostream.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/ADT/SmallString.h

2. 编写主要代码

主要就是将要写到文件的内容(Instruction等),写到 raw_fd_ostream 中。

// 1. 构建StringRef,需要用string构建
std::string filename("t.txt");		// filename即为要写的文件名
StringRef sr(filename);
// 2. 构建raw_fd_ostream,需要用到error_code
 std::error_code ec;
 raw_fd_ostream os(sr, ec);			// 构建具体os
// 3. 将要写的指令写到os中(重载了<<操作符)
os << *ii << "\n";		//ii是Instruction类型

完成!

3. 直接将整个block写入

代码类似:

std::vector<BasicBlock*> bbs = L->getBlocks();
os << *bbs[0] << "\n";
  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-04-24 09:11:57  更:2022-04-24 09:14:02 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 21:06:09-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码