ARM微处理器指令的寻址方式堆栈寻址口堆栈是一种数据结构,按先进后出(FirstInLastOut,FILO)的方式工作,使用一个称作堆栈指针的专用寄存器指示当前的操作位置,堆栈指针总是指向栈顶。口当堆栈指针指向最后压入堆栈的数据时,称为满堆栈(Full Stack),而当堆栈指针指向下一个将要放入数据的空位置时,称为空堆栈(EmptyStack)。16
16 堆栈寻址 ❑ 堆栈是一种数据结构,按先进后出(First In Last Out, FILO)的方式工作,使用一个称作堆栈指针的专用寄存器 指示当前的操作位置,堆栈指针总是指向栈顶。 ❑ 当堆栈指针指向最后压入堆栈的数据时,称为满堆栈 (Full Stack),而当堆栈指针指向下一个将要放入数据的 空位置时,称为空堆栈(Empty Stack)。 ARM微处理器指令的寻址方式
ARM微处理器指令的寻址方式堆栈寻址口根据堆栈的生成方式,又可以分为递增堆栈(AscendingStack)和递减堆栈(DecendingStack),当堆栈由低地址向高地址生成时,称为递增堆栈,当堆栈由高地址向低地址生成时,称为递减堆栈。这样就有四种类型的堆栈工作方式>满递增堆栈:堆栈指针指向最后压入的数据,且由低地址向高地址生成。>满递减堆栈:堆栈指针指向最后压入的数据,且由高地址向低地址生成。>空递增堆栈:堆栈指针指向下一个将要放入数据的空位置,且由低地址向高地址生成。>空递减堆栈:堆栈指针指向下一个将要放入数据的空位置,且由高地址向低地址生成17
17 堆栈寻址 ❑ 根据堆栈的生成方式,又可以分为递增堆栈(Ascending Stack)和递减堆栈(Decending Stack),当堆栈由低地址 向高地址生成时,称为递增堆栈,当堆栈由高地址向低地 址生成时,称为递减堆栈。这样就有四种类型的堆栈工作 方式 ➢满递增堆栈:堆栈指针指向最后压入的数据,且由低 地址向高地址生成。 ➢满递减堆栈:堆栈指针指向最后压入的数据,且由高 地址向低地址生成。 ➢空递增堆栈:堆栈指针指向下一个将要放入数据的空 位置,且由低地址向高地址生成。 ➢空递减堆栈:堆栈指针指向下一个将要放入数据的空 位置,且由高地址向低地址生成 ARM微处理器指令的寻址方式
ARM微处理器指令的寻址方式多寄存器寻址口采用多寄存器寻址方式,一条指令可以完成多个寄存器值的传送。这种寻址方式可以用一条指令完成传送最多16个通用寄存器的值。以下指令:; R1←[RO]LDMIA RO,(R1,R2, R3, R41; R2←[RO+4]; R3+[RO+8]; R4←[R0+12]口该指令的后缀IA表示在每次执行完加载存储操作后,RO按字长度增加,因此,指令可将连续存储单元的值传送到R1~R4。18
18 多寄存器寻址 ❑ 采用多寄存器寻址方式,一条指令可以完成多个寄存器值 的传送。这种寻址方式可以用一条指令完成传送最多16个 通用寄存器的值。以下指令: LDMIA R0,{R1,R2,R3,R4} ;R1←[R0] ;R2←[R0+4] ;R3←[R0+8] ;R4←[R0+12] ❑ 该指令的后缀IA表示在每次执行完加载/存储操作后,R0 按字长度增加,因此,指令可将连续存储单元的值传送到 R1~R4。 ARM微处理器指令的寻址方式
ARM微处理器指令的寻址方式相对寻址口与基址变址寻址方式相类似,相对寻址以程序计数器PC的当前值为基地址,指令中的地址标号作为偏移量,将两者相加之后得到操作数的有效地址。以下程序段完成子程序的调用和返回,跳转指令BL采用了相对寻址方式:;跳转到子程序NEXT处执行BL NEXTNEXT;从子程序返回MOV PC, LR19
19 相对寻址 ❑ 与基址变址寻址方式相类似,相对寻址以程序计数器PC的 当前值为基地址,指令中的地址标号作为偏移量,将两者 相加之后得到操作数的有效地址。以下程序段完成子程序 的调用和返回,跳转指令BL采用了相对寻址方式: BL NEXT ;跳转到子程序NEXT处执行 . NEXT . MOV PC,LR ;从子程序返回 ARM微处理器指令的寻址方式
提纲第四章ARM指令系统及汇编程序设计ARM指令系统THUMB指令系统2ATPCS介绍ARM和THUMB混合调用20
20 提纲 1 3 2 4 ARM 指令系统 ARM和THUMB混合调用 ATPCS 介绍 THUMB 指令系统 第四章 ARM指令系统及汇编程序设计