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.

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位)两个地址的值。

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