Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
这是一个 8 位架构,字长为 16 位。我现在需要使用一个 48 位整数变量。我的理解是 libm 实现了 8、16、32、64 位操作(加法、乘法、有符号和无符号)。
因此,为了进行计算,我必须将值存储在 64 位有符号或无符号整数中。正确的?
如果是这样,有什么可以防止使用一般例程?例如,对于添加:
libm 实现了标准大小的类型的例程,编译器选择正确的用于表达式。
如果你想实现自己的类型,你可以。如果您想使用通常的运算符,那么您必须进入编译过程以让编译器选择您的。
您可以将操作实现为函数,例如add(int48_t, int48_t),但是编译器将无法进行常量折叠等优化。
add(int48_t, int48_t)
因此,没有什么能阻止您实现自己的自定义编译器,但它真的有必要吗?你真的需要节省那个空间吗?如果是这样,那就去吧!
没错,节省几位(几乎在所有情况下)不值得麻烦实现自己的逻辑。