工具与软件:
我们 将 CCS 10.0.00010与编译器版本18.1.4 LTS 一起使用
参考以下主题:
对于编译器版本18.1.4 LTS、请确认:
- 编译器是否 用汇编语言加载/存储替换对 memcpy 的某些调用?
- 是否有方法指示编译器不要替换对 memcpy 的调用?
- 有没有一个文档详细说明了编译器在哪些不同情况下会确定它可以替换对 memcpy 的调用?
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.
工具与软件:
我们 将 CCS 10.0.00010与编译器版本18.1.4 LTS 一起使用
参考以下主题:
对于编译器版本18.1.4 LTS、请确认:
尊敬的 Jagadish:
感谢您的回复...
下面您可以看到一个非常简单的示例、说明编译器(18.1.4 LTS)已 将对 memcpy 的调用替换为汇编语言加载/存储:
对于上述情况、源和目标如下:
静态 UINT32 UISource[4]={0x0F0E0D0C、0x0B0A0908、0x07060504、0x03020100};
静态 UINT32 UIDest[4]={0x00FFEEDD、0xCCBBAA99、0x88776655、0x44332211};
这就留下了我最初发表的两个问题:
是否有方法可以指示编译器不要替换对 memcpy 的调用?
遗憾的是、不可以
是否有一份文档详细介绍了编译器将在哪些不同情况下确定可以替换对 memcpy 的调用?
请搜索 TI ARM 编译器手册 以查找标题为 内联内在函数运算符的子章节。 注意此详细信息:
abs 和 memcpy 作为内在函数实现
这意味着即使未使用优化、memcpy 也会被特殊处理。
考虑提供您自己的 memcpy 实现。 假设您给它命名 custom_memcpy . 那么添加以下内容可能是有意义的:
#define memcpy custom_memcpy
以更改调用 memcpy 的现有代码。
谢谢。此致、
-George.