c++ - 在 LLVM [C++] 中将 Int 转换为 APInt
问题描述
我试图通过 LLVM 构建语言(因为我必须这样做),但被困在简单的开始。我试图制作 int 常量,但是:
- ConstantInt::get 方法需要 APInt 类
- APInt 类没有从常规 int 到自身的有效转换
这是我的尝试:
Value * val = ConstantInt::get(Context, APInt(m_Lexer.numVal())
但答案是,没有接受 32 位签名 int 的 APInt 构造函数。
我的问题很简单:
- 我做错了什么或什么是有效的方法?
- LLVM c++ 库的某种文档在哪里,它不旧并且也有一些评论?
我尝试通过本教程工作,但它仅适用于双打,但我需要整数:https ://llvm.org/docs/tutorial/MyFirstLanguageFrontend/LangImpl03.html
解决方案
第一个参数ConstantInt::get
是 llvmType
而不是context
. 尝试这个
Value * val = ConstantInt::get(Type::getInt32Ty(Context), m_Lexer.numVal(), true);
最后一个布尔参数确定是否val
代表有符号或无符号i32
推荐阅读
- elasticsearch - 查询字符串查询中范围字段的 Elasticsearch 范围查询
- c# - NAudio WaveFileWriter 不会将文件大小写入波形文件
- amazon-web-services - 这在 API Gateway 中可行吗?
- arduino - 仅串行打印一次
- powerbi - 在 dax 或 power 查询中转置单列
- javascript - 始终按照数据集顺序显示自动完成元素
- sql - 加入返回意外的空结果
- json - Kotlin:将嵌套的 JSON 对象转换为文字字符串
- jquery - 为什么在条件语句变为假后第二次按下按钮?
- node.js - 如何将图像从快速服务器导入客户端(在 React 中)