如何在现有C代码中查找64位分区?
有人知道在现有代码库中查找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位除法,它们只需要用另一个函数替换函数。其余的源代码可以保持不变如何在现有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用于不同的任务,但我看不出有什么方法可以用于此目的。 如有任何提
交叉编译和检测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或者您甚至可以自己实现它。