论坛元老
 
- 积分
- 8062
- 金钱
- 8062
- 注册时间
- 2014-8-13
- 在线时间
- 1597 小时
|
发表于 2017-3-30 16:10:50
|
显示全部楼层
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的地址分布了。语法上看不出什么来。 |
|