所以我有一个 raspberry pi 零,我跟着 this非常酷的教程,可以作为在裸机 c 中对其进行编程的起点。一切都运行良好。
现在,对于我想要做的事情,我需要大小为 256 或 512 位的(无符号)整数,所以我开始寻找库。我找到了 BigDigits并让它在我的机器上轻松工作。
当我尝试用我的其余实际裸机代码编译它时(甚至没有包含它或在我的代码中的任何地方使用它)它编译和链接时没有警告或错误但我的代码不再工作,即我的树莓派没有像以前那样做。
我对裸机编程还是很陌生。我知道库使用的系统功能可能未实现,因此可能无法正常工作。但我什至没有调用任何 BigDigits 函数,也没有包括它们的任何 header 。
那为什么编译链接了却不行呢?我怎样才能让它工作或者是否有任何其他选项可以更容易地在裸机 c 环境中使用以获得任意精度?实际上,在编译时我总是知道我需要什么样的精度,所以我很乐意只使用 uint256_t 类型或类似的东西,但我找不到类似的东西。
提前致谢!
最佳答案
bignum 库之类的东西可以用汇编语言编写或作为外部/链接(或可能是内部)汇编代码包含在 C 中,如 Assembly big numbers calculator或 http://x86asm.net/articles/working-with-big-numbers-using-x86-instructions/然而,这必须移植到 ARM 程序集 (https://azeria-labs.com/arm-data-types-and-registers-part-2/)。包含在 C 中是 https://www.devdungeon.com/content/how-mix-c-and-assembly和 https://en.wikibooks.org/wiki/Embedded_Systems/Mixed_C_and_Assembly_Programming
关于c - 在裸机 c 中使用多重精度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60136480/