c++ - 如何获取 Ascii 格式 llvm 的指针类型?
问题描述
我一直在尝试使用 llvm IR 中的 cpp API 提取指针类型,以用作指令的元数据。我找到了各种方法来获取指令操作数的指针类型(例如 getPointerElementType()),但结果始终是十六进制格式(0x ....),这没有用,因为它不知道指针是否是 int或浮动等。我主要使用加载指令。我的问题是如何在 Ascii 中获取指针类型(例如 float 或 i32)?
Ps 我对 llvm 很陌生,所以如果我问了一些非常基本的问题,请原谅我。
解决方案
我在这里找到了答案, 有什么方法可以获取 llvm 引用指针值的原始类型(即指针类型)
但是有几个缺失的位:
请记住包含 Instructions.h 以便 LoadInst 被识别如下:
#include "llvm/IR/Instructions.h"
通过将指针传递给指令,可以针对 Load 指令(而不是函数调用)优化接受的答案:
LoadInst* LI = dyn_cast(O0)
O0 应该是指向相关加载指令的指针。
希望能帮助到你。
推荐阅读
- vba - 通过 VBA 连接到 Vertica
- reactjs - React 测试 - UnhandledPromiseRejection
- sql - 如何在 TimeScaleDB、PostgreSQL 的 time_bucket_gapfill() 中使用 AVG() 和 GROUP BY?
- python - Django 找不到静态文件
- python - Sqlalchemy:过滤关系中应该有多少个实例
- c++ - C++ 中的 std::expected 是什么?
- python - 如何在pygame中以指定的时间间隔以一定的速度移动和显示机器人
- c++ - 调试器需要永远在 Visual Studio 代码中进行调试
- docstring - 如何在 Python 3.9 / 3.10 中记录类方法属性?
- python - 在“预期”上找不到错误 Pylance [16,9]