所以我有一个树莓派零,我按照这个非常酷的教程,有一个在裸机c中编程的起点。
现在对于我想做的事情,我需要大小为 256 或 512 位的(无符号(整数,所以我去寻找库。我找到了BigDigits,并让它在我的机器上轻松工作。
当我尝试用我实际的裸机代码的其余部分编译它时(甚至没有包含它或在我的代码中的任何地方使用它(,它编译和链接没有警告或错误,但我的代码不再工作,即我的树莓派没有做它以前做过的事情。
我对裸机编程仍然很陌生。我知道库使用的系统功能可能未实现,因此可能无法正常工作。但我什至没有调用任何 BigDigits 函数,也没有包含它们的任何标头。
那么为什么它可以编译和链接但不起作用呢?我怎样才能让它工作,或者是否有任何其他选项更容易在裸机c环境中使用任意精度?实际上,我总是在编译时知道我需要什么精度,所以我很乐意只拥有uint256_t类型或类似的东西,但我找不到这样的东西。
提前感谢!
像bignum库这样的东西可以用汇编编写,也可以作为外部/链接(或内部(汇编代码包含在C中,如汇编大数计算器或 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
https://web.sonoma.edu/users/f/farahman/sonoma/courses/es310/310_arm/lectures/Chapter_3_Instructions_ARM.pdf 第 5 页