作者eopXD (eopXD)
看板CompilerDev
标题[问题] LLVM APInt 转换回 unsigned (已解决)
时间Thu Aug 26 14:33:26 2021
各位大大好,
觉得有 Compiler 版实在是太酷了!
在下有一个关於 APInt 的问题想要请教 ><
根据 APInt 在 doxygen 上的描述:
「APInt is a functional replacement for common case unsigned
integer type like "unsigned", "unsigned long" or "uint64_t".」
但是当在 LLVM 想要把 APInt 转换回 unsigned 这种 plain data type 时,
却只有 roundToDouble 这种转换浮点数的函数可以呼叫。
想要得到 unsigned int 就还需要 double -> unsigned 的转换。
请问是我误会 APInt 的角色吗?还是它的设计本来就不想要使用者转回
unsigned 来做操作?
以上是我的问题,谢谢愿意阅读本文的大大。
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 223.136.183.67 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/CompilerDev/M.1629959608.A.2D6.html
1F:→ oToToT: getRawData() 是你想要的吗? 08/26 14:55
2F:→ oToToT: 因为它可以存超过64bit 08/26 14:56
3F:→ Lipraxde: 小於 64bits 的话可以用 getZExtValue、getSExtValue 08/26 15:13
4F:→ oToToT: 所以它有可能要回传阵列给你,所以它给的是pointer 08/26 15:13
回 oToToT:
原来如此,当初有看到 getRawData 觉得 prototype 是指标所以没有细看。
回 Lipraxde:
居然藏身在 Value Characterization 分类底下,这的确可以拿来使用!
谢谢两位大大的回覆(而且好速!
小弟解惑了!
※ 编辑: eopXD (223.136.183.67 台湾), 08/26/2021 15:53:58
※ 编辑: eopXD (223.136.183.67 台湾), 08/26/2021 15:54:55
※ 编辑: eopXD (223.136.183.67 台湾), 08/26/2021 16:00:41