工具/软件:TI C/C++编译器
您好,
我在编译wolfsl库时遇到了问题。 在函数wc_AesDecrypt中有如下代码:
#define GETBYTE (x,y)(word32)((字节)((x)>>(8 *(y))))
…
静态连接字节TD4[256]={…}
…
S0 =
(((word32)TD4[GETBYTE(t0,3)]<<24)^
(((word32)TD4[GETBYTE(T3, 2)]<16)^
(((word32)TD4[GETBYTE(T2, 1)]<8) ^
(((word32)TD4[GETBYTE(T1, 0)]^
RK[0];
编译是按顺序完成的,但应用程序崩溃。 问题似乎是在GETBYTE宏中,表达式的结果未正确裁剪为byte,因此TD字段的索引超出边界。 如果宏被((x)>>(8 *(y))和0xFF)替换,一切都正常。
我尝试了编译器TMS470_TMS7 4.9 ,5.2 9和16.9 3,结果相同。 C64+ DSP编译器工作正常。
请告诉我什么错了。
谢谢
Jiri