IAP跳转APP段代码理解

IAP起始地址:iapaddr

APP起始地址:appaddr

中断向量表的起始地址:IAP:iapaddr+4(APP:appaddr+4)

中断向量存储的内容是中断服务程序的入口地址


typedef void(*iapfun)(void);  //定义函数指针类型

理解:iapfun表示一个指向函数的指针类型的名字,该指针类型为“指向返回void类型并且无参数的函数的指针”,可以使用函数名对函数指针进行初始化(定义函数指针对象):

iapfun iapjump2app;  //定义函数指针对象


jump2app=(iapfun)*(vu32*)(appxaddr+4);  //为函数指针对象赋值

appxaddr+4:APP程序中断向量表起始地址(即复位中断)

(vu32*)(appxaddr+4):将APP程序中断向量表起始地址强制类型转换为指向vu32类型数据的地址

*(vu32*)(appxaddr+4):取出(vu32*)(appxaddr+4)地址所存储的内容(这个内容刚好就是该地址对应中断向量的中断服务程序入口地址,其实就是复位中断服务程序函数的函数名)


jump2app();  //调用函数

运行的是中断服务程序对应的函数


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 重新系统学习下C++;但是还是少了好多知识点;socket;unix;stl;boost等; C++ 教程 | 菜...
    kakukeme阅读 20,096评论 0 50
  • iOS面试小贴士 ———————————————回答好下面的足够了------------------------...
    不言不爱阅读 2,043评论 0 7
  • ———————————————回答好下面的足够了---------------------------------...
    恒爱DE问候阅读 1,774评论 0 4
  • 多线程、特别是NSOperation 和 GCD 的内部原理。运行时机制的原理和运用场景。SDWebImage的原...
    LZM轮回阅读 2,046评论 0 12
  • 史上最全的iOS面试题及答案 迷途的羔羊--专为路痴量身打造的品牌。史上最精准的定位。想迷路都难!闪电更新中......
    南虞阅读 1,572评论 0 8