N7 arm汇编
一、复习C语言变量类型1.确定分配内存的大小2.确定使用方法。数组同类元素的集合---内存连续数组名是数组的首地址可以当指针使用但值不能改变数组定义大小(数组大小不可变)初始化数组部分元素初始化其他剩余元素为0访问数组名下标不能越界访问地址内存的编号指针存放地址的变量(类型)基类型决定指针指向地址的内容的类型数组指针int (*p)[10] ; //int array[10];指针数组int * array[10];函数指针int (*p fun)(int, int ); // int fun(int a, int b); p_fun fun; p_fun();指针函数int * fun(void);常量指针const int * p; int const * p;指针常量int * const p;typedef int (*pfun_t)(int,int );函数指针数组pfun_t fun_array[10];二、ARM汇编adds带状态位更新的加法溢出时会设置进位标志Cadc带进位加法会把当前C标志的值加入运算用于多字节 / 64 位加法必须用汇编的 4 个关键词启动初始化C 还跑不起来操作特殊寄存器C 做不到极致速度 / 时序C 不够精确中断 / 异常 / 任务切换C 控制不了立即数一个数(或按位取反后)循环右移偶数位后所有的1能放进低8位。✅0 ~ 255 之间的数 全部合法✅0xFF、0xFF00、0xFF0000、0xFF000000 合法✅大于 255 又不规则的数 非法SWI 软件中断进入管理模式SVC产生中断PC 0x18异常入口地址0x08SWI 是软件中断触发后 CPU 自动切到管理模式svcSWI 的异常入口地址是0x08异常向量表固定位置硬件自动做 “备份 CPSR→切模式→存返回地址→跳 0x08”返回时要 “恢复 CPSR从 SPSR 恢复 PC从 LR”deal swi stmfd sp!{r4-r12lr} sub r0lr#4 ldr r1,[r0] bic r0,rl,#(0xff 24) import cdeal_swi bl cdeal_swi ldmfd sp!,{r4-r12pc}^ ;带模式切换的恢复现场
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2432831.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!