【问题标题】:location of memcpy armmemcpy 手臂的位置
【发布时间】:2019-02-12 02:39:47
【问题描述】:

我在我的 ARM 平台上使用 memcpy,我想查看 memcpy 的源代码。从我的源代码查看 objectdump,我知道使用了这个 memcpy:

/usr/lib/gcc/arm-none-eabi/6.3.1/../../../arm-none-eabi/lib/thumb/v7e-m/libc.a(lib_a-memcpy.o)

如何查看memcpy的.c源码?

【问题讨论】:

  • 查看 libc 的源代码,如果您使用的是 libc,或者如果是 newlib,则查看 newlib,或者如果它来自 gcclib,然后来自 gcc,等等。如果您发现它是用汇编编写的,请不要感到惊讶。
  • 你也可以拆机。
  • 我正在使用 arm gcc 编译。是否有用于 arm gcc 的 libc 源代码,还是只有一个用于在多个平台上运行的 libc 源代码?
  • gcc 源代码中有一个 c 库,但这不是世界上唯一的 c 库,当然也不是唯一的 memcpy。

标签: arm memcpy


【解决方案1】:

在 some 编译器(带有 some 优化标志)上,memcpy 会使用一些 __builtin_memcpy 由编译器神奇地处理(甚至可能不会发出任何函数调用,但始终是内联和专用的)。

请参阅this 相关问题和documentation of GCC builtins。最后,深入了解 GCC 编译器的源代码。

还要查看您的libc 的源代码。它可能在某些内部标题中提到了__builtin_mempcy。

当然,使用gcc -S -fverbose-asm -O,查看生成的汇编文件*.s

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-02
    • 2020-07-24
    • 2022-08-27
    • 2014-09-07
    相关资源
    最近更新 更多