ARM开发总结的小知识 Code, RO-data Code为程序代码部分 Program Size: Code="18248" RO-data=320 RW-data=260 ZI-data=3952 Code, RO-data,RW-data ..............flash 初始化时RW-data从flash拷贝到RAM 生成的map文件位于list文件夹下 (KEIL) Total RO Size (Code + RO Data) 18568 ( 18.13kB) ARM指令的长度刚好是1个字(分配为占用4个字节),Thumb指令的长度刚好是半字(占用2个字节) R0-R15 (R15-PC,R14-LR,R13-SP) 32位 每个异常模式还带有一个程序状态保存寄存器 (SPSR),它用于保存在异常事件发生之前的CPSR LDMIA R1!,{R2-R7, R12} ;将R1单兀中的数据读出到R2-R7,R12, R1自动加1 在数据传送之前,将偏移量加到Rn中,其结果作为传送数据的存储地址.若使用后缀“!”,则结果写回到Rn中,且Rn值不允许为R15.指令举例如下: LDMFD SP!,{R0-R3,PC}^ ;中断返回 大端格式(Big-endian) ARM微处理器支持7种运行模式,分别为: CPSR M[4:0] 用户模式(usr):ARM处理器正常的程序执行状态。 10000 ARM正常工作一般工作在用户模式和系统模式,复位的时候进入管理模式 对于ARM指令集来说,PC指向当前指令的下两条指令的地址 注意pc,在调试的时候显示的是当前指令地址,而用mov lr,pc的时候lr保存的是此指令向后数两条指令的地址 假设反汇编代码: 0x000001 : mov lr pc (此时查看PC寄存器的值是0x000001,但实际PC值是0x000003, lr里面保存的就是0x000003)
fields 指定传送的区域(psr CPSR或SPSR) 例如:MSR cpsr_c, #0xD3 ; CPSR[7...0] = 0xD3
|
|