所以我有一个树莓派零,并且我跟随this真的很酷的教程开始使用裸机c编程它的起点。一切都很好。
现在,对于我想做的事情,我需要(无符号)整数,其大小为256或512位,因此我开始寻找库。我找到了BigDigits并使其在我的机器上可以轻松工作。
但是,当我尝试用其余的实际裸机代码进行编译(甚至不包含它或在代码中的任何地方使用它)时,它进行编译和链接时没有警告或错误,但我的代码不再起作用,即,我的树莓派不做以前做的事。
我对裸机编程还是很陌生。我知道该库可能使用了尚未实现的系统功能,因此可能无法正常工作。但是我什至没有调用任何BigDigits函数,也没有包括它们的任何标头。
那么,为什么要编译和链接却不起作用?以及如何使它工作或在裸机c环境中使用其他更容易获得任意精度的选项?实际上,我总是在编译时就知道我需要什么精度,所以我很高兴拥有uint256_t类型或类似的东西,但是我找不到类似的东西。
提前致谢!
最佳答案
像bignum库之类的东西可以用汇编语言编写,也可以像Assembly big numbers calculator或http://x86asm.net/articles/working-with-big-numbers-using-x86-instructions/中那样作为外部/链接(或内部)汇编代码包含在C中,但是必须移植到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页