TI中文支持网
TI专业的中文技术问题搜集分享网站

TMS320F28374S: CCS编译优化级别影响U32位指针类型变量取地址的问题。

Part Number:TMS320F28374S

我在做源c文件代码封装为静态库文件.Lib时,遇到了指针类型变量在不同优化级别下,指针取值的地址不一致的问题。

实际现象: 

使用CCS8.2建立一个输出类型为executable类型的工程,编译器为18.1.1.LTS。在C文件 TEST.c 中,定义一个* unsigned long 类型的变量A (无符号32位指针),定义一个unsigned long 类型的变量B(无符号32位整型), 编译器使用1级优化。 

令这个这个指针指向地址为0x00014279。 对A进行取值操作将值赋值给B,观测到B中的数据为0x0001427A(高16位) 0x00014279(低16位)两个地址的值。

使用同样的C文件, 使用CCS8.2建立一个输出类型为静态库的工程,编译器为18.1.1.LTS。编译器使用0级优化,编译之后得到。lib文件。将这个LIb文件替换掉上面工程中的TEST.C文件,

观测到观测到B中的数据为0x00014279(高16位) 0x00014278(低16位)两个地址的值。

请问为什么会出现这样的现象?

Yale Li:

如果优化等级调整为相同的,结果如何呢?

文智 张 said:将这个LIb文件替换掉上面工程中的TEST.C文件

能再具体描述一下这里吗?

,

文智 张:

如果编译静态库文件时候的优化级别设置为1,再替换c文件源码,则与直接使用c文件源码编译的结果一样。

,

Yale Li:

我需要一些时间来看一下

赞(0)
未经允许不得转载:TI中文支持网 » TMS320F28374S: CCS编译优化级别影响U32位指针类型变量取地址的问题。
分享到: 更多 (0)