Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Embedded 搜索嵌入式C库以对不使用标准libc的大数字进行操作?_Embedded_Static Libraries_Gmp_Bignum - Fatal编程技术网

Embedded 搜索嵌入式C库以对不使用标准libc的大数字进行操作?

Embedded 搜索嵌入式C库以对不使用标准libc的大数字进行操作?,embedded,static-libraries,gmp,bignum,Embedded,Static Libraries,Gmp,Bignum,我必须对非常大的数字进行操作,可能是2048字节,以实现RSA。根据汽车领域的规则,我不能使用使用标准libc的bignum库。我搜索过GMP和Polarssl,但它们都使用malloc()和其他东西 那么,是否有任何库/方法不依赖于libc,也可以管理如此大的数字 我认为你不会找到任何像样的大整数C库,它不使用malloc,calloc,也可能不使用realloc或任何动态分配,因为任意的精度数字的全部意义在于超越有限,依赖于平台的堆栈大小,其次,它是一种比编译时静态内存分配更灵活的方法 我的

我必须对非常大的数字进行操作,可能是2048字节,以实现RSA。根据汽车领域的规则,我不能使用使用标准libc的bignum库。我搜索过GMP和Polarssl,但它们都使用malloc()和其他东西


那么,是否有任何库/方法不依赖于libc,也可以管理如此大的数字

我认为你不会找到任何像样的大整数C库,它不使用
malloc
calloc
,也可能不使用
realloc
或任何动态分配,因为任意的精度数字的全部意义在于超越有限,依赖于平台的堆栈大小,其次,它是一种比编译时静态内存分配更灵活的方法

我的猜测是调整
迷你gmp
包以克服您的特定限制。(您将在主目录下找到它以及一些测试)。它包含一个头文件和C源文件,因此“切断”libc的依赖关系应该比“全功能发布”简单得多,但是它不会那么快,因为GMP严重依赖各种CPU架构的高度优化的汇编代码

根据kkrambo的建议,您也可以尝试使用
NO_ALLOCS
选项的库,该选项从2.2版开始提供:

添加了NO_ALLOCS选项来编译“mp”库,而不使用 任何内存分配


我不确定这是否符合您的要求,但请检查库。您需要更清楚地了解在
libc
中哪些是不可接受的。如果这是您的问题,您可以将源代码更改为不使用分配器。我认为集中精力解决这个问题比征求建议要好。也就是说,你问题的方法部分是有希望的。该库包括一个核心库,可以使用
NO\u ALLOCS
预处理器定义禁用该库的内存分配。然后核心库将使用固定数组,您可以根据应用程序的知识调整这些数组的大小。@kkrambo:我没有注意到,答案已编辑,谢谢您的启发:-)