这是一个8位架构,字长为16位。我现在需要使用48位整数变量。我的理解是libm实现了8,16,32,64位操作(加法,乘法,有符号和无符号)。
因此,为了进行计算,我必须将值存储在64位有符号或无符号整数中。正确的吗?
如果是这样,有什么可以防止使用一般例程?例如,添加:
答案 0 :(得分:3)
libm实现标准大小类型的例程,编译器选择正确的用于表达的例程。
如果您想实现自己的类型,可以。如果你想使用通常的操作符,那么你必须进入编译过程以让编译器选择你的。
您可以将操作实现为函数,比如add(int48_t, int48_t)
,但编译器将无法进行常量折叠等优化。
所以,没有什么可以阻止你实现自己的自定义编译器,但是它真的有必要吗?你真的需要保存这个空间吗?如果是这样,那就去吧!
答案 1 :(得分:2)
这是正确的,保存几个位(几乎在所有情况下)都不值得实现自己的逻辑。