clang - 可以在 LLVM IR 中转换为“i256”变量的 C/C++ 类型
问题描述
我注意到在 LLVM IR 中有一些很长的类型,例如i256
, i256*
. 但是,即使我unsigned long long
将变量编译为 LLVM IR,其对应的类型也是i64
.
所以我的问题是,什么样的C/C++
变量可以编译成i256
LLVM IR 中的变量?谢谢。
解决方案
您可以使用位域结构来获取内部i256
数据类型。例如 :
typedef struct {
unsigned long long a : 64 ;
unsigned long long b : 64 ;
unsigned long long c : 64 ;
unsigned long long d : 64 ;
} S;
S a = {1,1};
S f() {
return a;
}
使用选项编译:clang -emit-llvm -g0 -O0
生成的IR如下:
%struct.S = type { i256 }
推荐阅读
- javascript - 如何为移动浏览器打开全屏视频
- python - 无法从列表中删除项目
- php - 从 laravel 中的 routeserviceprovider 创建路由时中间件不起作用
- python - 运行此代码时出现异常
- javascript - 如何使用 css 解决 chrome 中的高度问题?
- web-services - 我们如何在 OpenTest 中进行使用 formdata 而不是 json 的 POST 服务调用?
- geoserver - 在 QGIS 中发送 WMS GetMAP API 请求时获取主机需要身份验证
- python-3.x - 如何使用带有自定义身份验证的 docker 设置 pypiserver?
- couchbase - couchbase 索引未创建
- asp.net-mvc - 从客户端调用时,IdentityServer 令牌返回 UnAuthorized