ARM汇编
Aguangg_6655_la
充电。。。
展开
-
深入理解ARM的SP LR PC这三个寄存器
深入理解ARM的这三个寄存器,对编程以及操作系统的移植都有很大的裨益。1、堆栈指针r13(SP):每一种异常模式都有其自己独立的r13,它通常指向异常模式所专用的堆栈,也就是说五种异常模式、非异常模式(用户模式和系统模式),都有各自独立的堆栈,用不同的堆栈指针来索引。这样当ARM进入异常模式的时候,程序就可以把一般通用寄存器压入堆栈,返回时再出栈,保证了各种模式下程序的状态的完整性。转载 2016-12-13 21:11:57 · 34739 阅读 · 4 评论 -
ARM体系结构CPSR-当前程序状态寄存器
CPSR有4个8位区域:标志域(F)、状态域(S)、扩展域(X)、控制域(C)MSR - Load specified fields of the CPSR or SPSR with an immediate constant, or from the contents of a general-purpose register.Syntax:MSR{cond} _原创 2017-06-21 11:11:37 · 1226 阅读 · 0 评论 -
stmdb和ldmia指令
首先一句话说一下stmdb和ldmia指令的作用:stmdb和ldmia指令一般配对使用,stmdb用于将寄存器压栈,ldmia用于将寄存器弹出栈,作用是保存使用到的寄存器。ARM指令的多数据传输(STM、LDM)中,提到:多寄存器的Load和Store指令分为2组:一组用于数据的存储与读取,对应于IA、IB、DA、DB,一组用于堆栈操作,对应于FD、ED、FA、EA,两组中对应的转载 2017-03-02 10:55:03 · 4756 阅读 · 2 评论 -
MSR与MRS
1、MRS指令MRS指令的格式为:MRS{条件} 通用寄存器,程序状态寄存器(CPSR或SPSR)MRS指令用于将程序状态寄存器的内容传送到通用寄存器中。该指令一般用在以下两种情冴: Ⅰ.当需要改变程序状态寄存器的内容时,可用MRS将程序状态寄存器的内容读入通用寄存器,修改后再写回程序状态寄存器。Ⅱ.当在异常处理或进程切换时,需要保存程序状态寄存器的值,可先用该指令读出转载 2017-03-02 10:42:04 · 1019 阅读 · 0 评论 -
ARM汇编实现C语言switch语句其中对PC寄存器取值的解析
源码如下: AREA EX4_44,CODE,READONLY ENTRY CODE32START MOV R0,#0 CMP R0,#8 ADDLT PC,PC,R0,LSL#2 B method_d B method_0 B method_1 B method_2 B method_3 B method_4 B method_5 B met原创 2016-12-12 19:28:15 · 3481 阅读 · 0 评论 -
ARM汇编程序AXD调试出现00000000 [0xe7ff0010] dci 0xe7ff0010 ; ? undefined 00000004 [0xe800e800] stmd
问题现象:00000000 [0xe7ff0010] dci 0xe7ff0010 ; ? undefined00000004 [0xe800e800] stmda r0,{r11,r13-pc}00000008 [0xe7ff0010] dci 0xe7ff0010 ; ? undefined0000000c [0xe800e800] s转载 2016-12-13 22:36:20 · 1303 阅读 · 0 评论 -
AXD 调试使用经验及问题
AXD 使用经验1、使用AXD进行调试: AXD不会自动去帮你配置SDRAM,配置SDRAM是用户的事情。AXD只不过提供了命令行,让用户可以配置CPU内部的管理单元。AXD下载的时候,假设用户已经配置好了SDRAM,所以在下载的时候,是用户的责任去确保下载的区域是可写的。所以在AXD中应在运行程序之前让AXD运行一段自动配置SDRAM的指令。 AXD中的V转载 2016-12-13 22:10:39 · 3048 阅读 · 0 评论 -
Processor ARM7TDMI raised an exception.Cause:Undefined instruction
出现这个原因是因为我们在ads的DebugRel Settings中的设置与AXD中Options->Configure Target中的设置不一样。请看下面的图:ADS中:因为我用的是ARM920T,所以全部在设置为ARM920T,就是Language Setting下的五个选项的Architecture or Processor全部设置为ARM920TAXD中:见A转载 2016-12-13 22:08:27 · 2001 阅读 · 0 评论 -
ARM汇编指令B和BL的区别
B常用于不返回的跳转,比如跳到某个标号处,BL则用于子程序跳转(要返回,返回地地存于LR)B. (注意B后面的“.”)这个“.”是指定当前的地址,如果使用 B.这条指令,其实就是死循环。原创 2016-12-13 21:23:59 · 5595 阅读 · 0 评论 -
ARM程序异常返回操作
异常的发生会导致程序正常运行的被打断, 并将控制流转移到相应的异常处理(异常响应),有些异常(fiq、irq)事件处理后,系统还希望能回 到当初异常发生时被打断的源程序断点处继续完成源程序的执行(异常返回),这就需要一种解决方案, 用于记录源程序的断点位置,以便正确的异常返回。 类似的还有子程序的调用和 返回。在主程序中(通过子程序调用指令)调用子程序时,也需要记录下主程序中的调用点位置,以原创 2017-06-22 11:15:49 · 1644 阅读 · 0 评论