Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.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
如何在现有C代码中查找64位分区?_C_Gcc_Llvm Clang - Fatal编程技术网

如何在现有C代码中查找64位分区?

如何在现有C代码中查找64位分区?,c,gcc,llvm-clang,C,Gcc,Llvm Clang,有人知道在现有代码库中查找64位分区的方法吗?可能通过引入64位除法的编译错误或警告。gcc还是叮当声 背景是我想用自定义函数替换上述代码库中的所有64位分区,例如a/b将替换为my64_diva,b;。使代码更容易移植到ARM 32位平台。 我想我可以为ARM32交叉编译它并查看编译错误。有没有一种不用交叉编译就能做到这一点的方法 可能是一个带有cparser库的python脚本,可以找到64位分区?我以前曾将PyCLibrary用于不同的任务,但我看不出有什么方法可以用于此目的。 如有任何提

有人知道在现有代码库中查找64位分区的方法吗?可能通过引入64位除法的编译错误或警告。gcc还是叮当声

背景是我想用自定义函数替换上述代码库中的所有64位分区,例如a/b将替换为my64_diva,b;。使代码更容易移植到ARM 32位平台。 我想我可以为ARM32交叉编译它并查看编译错误。有没有一种不用交叉编译就能做到这一点的方法

可能是一个带有cparser库的python脚本,可以找到64位分区?我以前曾将PyCLibrary用于不同的任务,但我看不出有什么方法可以用于此目的。 如有任何提示,我们将不胜感激

编辑: 再多了解一下我为什么需要这个。这里有三支队伍

研究小组:他们编写代码时不太关心64位划分

我的团队:我们在代码中集成了研究库。我们生产最终产品。它是作为源代码交付的

客户:我们的一些客户会将此代码移植到ARM 32位内核。他们希望用自己优化的函数替换64位分区

小组1。二,。主要使用64位PC来编译代码。在这个阶段找到64位分区将非常好,因为它们非常昂贵,我们正在努力避免它们。因此,在夜间构建期间对它们进行标记将是非常棒的。 其次,我们希望让客户的生活更轻松。这意味着,如果我们用一个自定义函数替换所有64位除法,它们只需要用另一个函数替换函数。其余的源代码可以保持不变


交叉编译和检测uu udivdi3当然是一种可能性,也可能是唯一的选择。但我希望有另一种解决方案。

我将在这里解决XY问题:您不需要这样做。64位除法是C语言的一部分,存在于任何有效的C编译器中。通常在没有本机指令的目标上注意:许多目标甚至没有32位本机指令!它通常实现为对编译器提供的库的库调用


如果确实想找到它们,请使用nm实用程序从对象文件(例如grep its output)中查找对这些库函数的引用,或者使用objdump-dr来查看引用来自哪个函数。GCC发起的典型命名约定是u udivdi3等,但在ARM上,可能会有一个由EABI定义的不同名称,而使用的是与u aeabi.*div.*等模式匹配的名称。

我将在这里解决XY问题:您不需要这样做。64位除法是C语言的一部分,存在于任何有效的C编译器中。通常在没有本机指令的目标上注意:许多目标甚至没有32位本机指令!它通常实现为对编译器提供的库的库调用


如果确实想找到它们,请使用nm实用程序从对象文件(例如grep its output)中查找对这些库函数的引用,或者使用objdump-dr来查看引用来自哪个函数。GCC发起的典型命名约定是u udivdi3等,但在ARM上可能会有一个由EABI定义的不同名称,它被用来代替与模式匹配的名称,如u aeabi.*div..

No。您必须手动检查代码库。这就是我目前正在做的工作,但这是一个很大的工作:在不支持64位除法的系统上;编译器最有可能注入对库函数的调用,例如对进行64位除法的u udivdi3的调用,以便软件仍能工作。您可以用自己的函数查找/替换库函数,而不是替换原始源代码中的64位除法。@Brendan或者您甚至可以自己实现它。否。您必须手动检查代码库。这就是我目前正在做的,但这是一项大量的工作:在不支持64位除法的系统上;编译器最有可能注入对库函数的调用,例如对进行64位除法的u udivdi3的调用,以便软件仍能工作。您可以用自己的函数查找/替换库函数,而不是替换原始源代码中的64位除法。@Brendan或者您甚至可以自己实现它。