关于IAP一些语句问题

2019-08-23 15:28发布

关于IAP方面的问题,if(((*(vu32*)appxaddr)&0xffe0000)==0x20000000)   我不太懂这个条件语句为什么是栈顶地址是否合法的判断,谁能解答解答一下?


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
5条回答
mack13013
2019-08-24 00:51
if(((*(vu32*)appxaddr)&0xffe0000)==0x20000000)
((*(vu32*)appxaddr)&0xffe0000)==0x20000000
appxaddr应该是个变量,看名字应该表示某个地址
然后(vu32*)appxaddr表示将appxaddr强制转换成vu32*类型,该类型是一个volatile 的无符号32长度(long)数据指针,
再然后(*(vu32*)appxaddr)表示取出指针指示的变量数值。
上面整体的说,就是将appxaddr这个变量中的数值作为地址,然后取出这个地址中的数值(要取32位,并且把这个取出的数值看作无符号的long型)。
再然后就是跟0xFFE0000与一下,看最后结果是否与0x20000000相等。

至于为什么说这条语句判断是否栈顶合法,这要看程序逻辑和MCU的地址分布了。语法上看不出什么来。

一周热门 更多>