Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7111891
  • 博文数量: 3857
  • 博客积分: 6409
  • 博客等级: 准将
  • 技术积分: 15948
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-02 16:48
个人简介

迷彩 潜伏 隐蔽 伪装

文章分类

全部博文(3857)

文章存档

2017年(5)

2016年(63)

2015年(927)

2014年(677)

2013年(807)

2012年(1241)

2011年(67)

2010年(7)

2009年(36)

2008年(28)

分类:

2013-01-04 11:36:06

原文地址:arm常见汇编指令 作者:陈九CU

只罗列,不多说。
16个寄存器,R0-R16,其中R14,R15,R16,分别用作,程序链接寄存器,PC寄存器,CPSR寄存器。
是每一种工作模式下可用十六个寄存器并非总量,有些寄存器在不同的工作模式下共用。
所有数据最终都要传送到R0-R14(R14不作程序链接寄存器时也用作通用寄存器)之间进行处理。
伪指令:                            
1,
         
B,BL
                     
2,    MOV,MVN(比MOV为了一步反)

3,
       
LDR,STR
4,       
ADD,SUB,ADC(带进位加法),SBC(带进位减),MUL
5,
       
AND(与),ORR(或),XOR,TST(测某位是否为一),BIC(清位)
6,   
CMP(比较指令)
7,      
LDM/STM(批指令)
8,nop

大部分指令后位可以接 S两个特殊位来表示,CPSR特殊的一些判断,

S,表示当前指令执行后把结果改写CPSR

九种寻址方式:

1,
ADD R0,R1, R2     寄存器寻址
2,MOV R0,#64              立即数寻址  
3,LDR R0,[R1]           寄存吕间接寻址
4,MOV R0,R2,LSL  #3   寄存器偏移寻址,此例是R2的值左移三们
5,LDR R0,[R1,#4]      寄存器基址寻址
6,LDMIA  R0,{R1,R2,R3,R4}  多寄存器寻址(将R0表示的地址中的数据依次写入后面的寄存器)
7,BL   NEXT  相对寻址(以PC为基址)
8,STMFD  SP,{R1-R7, LR}  堆栈寻址
9,块拷贝寻址,和堆栈寻址差不多,只是把栈寄存器换成其他地址寄存器

有关STM LDM后面两个字母的解释如下 :
IA: 每次传送后地址加4;
IB: 每次传送前地址加4;
DA: 每次传送后地址减4;
DB: 每次传送前地址减4;
FD: 满递减堆栈;F:SP指向最后一个数据
ED: 空递减堆栈;E:SP指向将要进来的一个数据
FA: 满递增堆栈;
EA: 空递增堆栈。
 


还有两个协处理器数据处理指令:mcr ,mrc
MCR{} p15, 0, , , {,}  
         条件, 协处理理编号,操作码,源寄存器,目标寄存器1和2,
MCR指令将ARM处理器的寄存器中的数据传送到协处理器的寄存器中
MRC{} p15, 0, , , {,
                                                      目的寄存器,源寄存器1和2,
MRC指令将协处理器的寄存器中数值传送到ARM处理器的寄存器中
附加的目标寄存器或者原操作数寄存器,用于区分同一个编号的不同物理寄存器。当指令中不需要提供附加信息时,将C0指定 为,否则指令操作结果不可预知。  提供附加信息,用于区别同一个编号的不同物理寄存器。

暂时就想到这些内容


                                                                                                                                                                                                                                                                                                 

阅读(365) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~