This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMS570LS1224:替换了18.1.4 LTS 对 memcpy 的调用

Guru**** 2112355 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1443042/tms570ls1224-18-1-4-lts-call-to-memcpy-are-replaced

器件型号:TMS570LS1224

工具与软件:

我们 将 CCS 10.0.00010与编译器版本18.1.4 LTS 一起使用

参考以下主题:

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/357438/compiler-replaces-memcpy-calls-with-loads-stores

对于编译器版本18.1.4 LTS、请确认:

  • 编译器是否 用汇编语言加载/存储替换对 memcpy 的某些调用?
  • 是否有方法指示编译器不要替换对  memcpy 的调用?
  • 有没有一个文档详细说明了编译器在哪些不同情况下会确定它可以替换对 memcpy 的调用?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Paulo:

    在我们的调试中、我发现:

    为 memcpy API 生成上述代码的编译器。

    首先是将目标地址、源地址和字节数分别加载到 R0、R1和 R2中、然后是调用  __aeabi_memcpy4 用于实际数据复制的 API。

    这是的定义  __aeabi_memcpy4  API:

    ——
    谢谢、此致、
    Jagadish。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Jagadish:

    感谢您的回复...

    下面您可以看到一个非常简单的示例、说明编译器(18.1.4 LTS)已 将对 memcpy 的调用替换为汇编语言加载/存储:

    对于上述情况、源和目标如下:

    静态 UINT32 UISource[4]={0x0F0E0D0C、0x0B0A0908、0x07060504、0x03020100};
    静态 UINT32 UIDest[4]={0x00FFEEDD、0xCCBBAA99、0x88776655、0x44332211};

    这就留下了我最初发表的两个问题:

    • 是否有方法指示编译器不要替换对  memcpy 的调用?
    • 有没有一个文档详细说明了编译器在哪些不同情况下会确定它可以替换对 memcpy 的调用?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是否有方法可以指示编译器不要替换对  memcpy 的调用?

    遗憾的是、不可以

    是否有一份文档详细介绍了编译器将在哪些不同情况下确定可以替换对 memcpy 的调用?

    请搜索 TI ARM 编译器手册 以查找标题为 内联内在函数运算符的子章节。  注意此详细信息:

    abs 和 memcpy 作为内在函数实现

    这意味着即使未使用优化、memcpy 也会被特殊处理。   

    考虑提供您自己的 memcpy 实现。  假设您给它命名 custom_memcpy .  那么添加以下内容可能是有意义的:

    #define memcpy custom_memcpy

    以更改调用 memcpy 的现有代码。

    谢谢。此致、

    -George.