安防之家讯:ARM指令的基本格式如下:
其中<>号内的项是必须的,{}号内的项是可选的。各项的说明如下:
ARM指令集——第2个操作数
ARM指令的基本格式如下:
灵活的使用第2个操作数“operand2”能够提高代码效率。它有如下的形式:
(1)#immed_8r——常数表达式;
(2)Rm——寄存器方式;
(3)Rm,shift——寄存器移位方式;
关于“#immed_8r——常数表达式”
该常数必须对应8位位图,即一个8位的常数通过循环右移偶数位得到。
关于“Rm——寄存器方式”:
在寄存器方式下,操作数即为寄存器的数值。
例如:
SUB R1,R1,R2
MOV PC,R0
关于“Rm,shift——寄存器移位方式”:将寄存器的移位结果作为操作数,但Rm值保持不变,移位方法如下:
关于“Rm,shift——寄存器移位方式”:
例如:
ADD R1,R1,R1,LSL #3 ;R1=R1+R1*8=9R1
SUB R1,R1,R2,LSR R3 ;R1=R1-(R2/2R3)
关于“ARM指令集——条件码”;ARM指令的基本格式如下:
使用条件码“cond”可以实现高效的逻辑操作,提高代码效率。
所有的ARM指令都可以条件执行,而Thumb指令只有B(跳转)指令具有条件执行 功能。如果指令不标明条件代码,将默认为无条件(AL)执行。
关于“ARM指令集——条件码”:
关于“ARM指令集——存储器访问指令”:ARM处理器是典型的RISC处理器,对存储器的访问只能使用加载和存储指令实现。ARM处理器是冯·诺依曼存储结构,程序空间、RAM空间及I/O映射空间统一编址,除对RAM操作以外,对外围IO、程序数据的访问均要通过加载/存储指令进行。
存储器访问指令分为“单寄存器操作指令”和“多寄存器操作指令”。
LDR/STR指令用于对内存变量的访问、内存缓冲区数据的访问、查表、外围部件的控制操作等。若使用LDR指令加载数据到PC寄存器,则实现程序跳转功能,这样也就实现了程序散转。
所有单寄存器加载/存储指令可分为“字和无符号字节加载存储指令”和“半字和有符号字节加载存储指令。
下面讲讲,LDR和STR——字和无符号字节加载/存储指令:LDR指令用于从内存中读取单一字或字节数据存入寄存器中,STR指令用于将寄存器中的单一字或字节数据保存到内存。指令格式如下:
LDR{cond}{T} Rd,<地址> ;将指定地址上的字数据读入Rd
STR{cond}{T} Rd,<地址> ;将Rd中的字数据存入指定地址
LDR{cond}B{T} Rd,<地址> ;将指定地址上的字节数据读入Rd
STR{cond}B{T} Rd,<地址> ;将Rd中的字节数据存入指定地址
其中,T为可选后缀。若指令有T,那么即使处理器是在特权模式下,存储系统也将访问看成 是在用户模式下进行的。T在用户模式下无效,不能与前索引偏移一起使用T。
安防之家专注于各种家居的安防,监控,防盗,安防监控,安防器材,安防设备的新闻资讯和O2O电商导购服务,敬请登陆安防之家:http://anfang.jc68.com/