ARM汇编指令集学习笔记

ARM汇编指令集学习笔记

ID:43484361

大小:21.51 KB

页数:3页

时间:2019-10-07

ARM汇编指令集学习笔记_第1页
ARM汇编指令集学习笔记_第2页
ARM汇编指令集学习笔记_第3页
资源描述:

《ARM汇编指令集学习笔记》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、ARM汇编指令集:指令:汇编指令是CPU机器指令的助记符,经过编译后会得到一串1、0组成的机器码,可以由CPU读取执行伪指令:在编译过程中间起作用,用来指导编译过程,经过编译后不会生成机器码***ARM汇编特点1:LDR/STR架构:在RISC架构中,cpu读写内存需要通过CPU内部的寄存器(CISC的CPU可以直接和内存通信)***ARM汇编特点2:8中寻址方式#寄存器寻址movr1,r2把r2里面的内容送到r1里面去(寄存器靠名字找的)#立即寻址(立即数)movr0,#0xFF00加#表示数字#寄存器移位寻址m

2、ovr0,r1,lsl#3lsl左移指令,把r1的值左移三位,然后把左移后生成的那个数赋值给r0#寄存器间接寻址ldrr1,[r2][r2]表明内存地址存在r2中,然后把内存地址里面存储的那个值赋给r1基址变址寻址ldrr1,[r2,#4] [r2,#4]中存储的地址为r2中的地址+4构成的地址,r2里面存储的地址称为基地址,后面的数字就是需要的变址数这条指令的意思:把r2存储的内存地址加4的地址的值赋值给r1#多寄存器寻址ldmiar1!,{r2-r7,r12}一次访问多个寄存器//////r1放的内存地址,把r

3、1理解为数组,r2-r7,r12表示7个寄存器,这句指令的意思就是:r1当中存储的内存地址为基地址,然后把从这个地址开始的连续七个地址当中存储的值,依次放在后面对应的寄存器中#堆栈寻址stmfdsp!,{r2-r7,lr} #相对寻址beqflagflag:标号***ARM汇编特点3:指令后缀同一指令经常附带不同后缀,变成不同的指令。经常使用的后缀有:B(byte)功能不变,操作长度变为8位H(halfword)功能不变,长度变为16位S(signed)功能不变,操作数变为有符号如ldrldrbldrhldrsbl

4、drshS(S标志)功能不变,影响CPSR标志位一般用在数据传输指令如mov和movsmovsr0,#0 ***ARM汇编特点4:条件执行后缀movr0,r1@相当于C语言的r0=r1 moveqr0,r1@如果eq后缀成立,则执行本句指令,反之,则不执行条件后缀执行注意两点:1.条件后缀是否成立,不是取决于本句代码,而是取决于这句代码之前的代码运行后的结果2.条件后缀决定了本句代码是否会执行,而不会影响上一句或下一句代码是否会执行***ARM汇编特点5:多级指令流水线pc指向正在被取指的指令,而非正在执行的指令*

5、*****数据传输指令movr1,r0@两个寄存器之间传递数据movr1,#12fff@把立即数赋值给目标寄存器mvn和mov用法一样区别是mov原封不动传递,mvn是按位取反传递******逻辑指令and逻辑与 orr逻辑或eor逻辑异或bic位清除指令bicr0,r1,#0x1f将r1中的数的bit0到bit4(#0x1f为1的位清零)清零后赋值给r0******比较指令cmpcmn看两个值是否互补tsttestr0,#0xf@测试r0的0~3位是不是为0teq测试等价比较指令用来比较两个寄存器中的数比较指令不

6、用后加S后缀就可以影响cpsr中的标志位******常用ARM指令cpsr访问指令:mrs&msrmrs用来读psr,msr用来写psr cpsr寄存器比较特殊,需要专门的指令访问,这就是mrs和msr******跳转指令b&bl&bxb:直接跳转bl(branchandlink):跳转前把返回地址放入lr中,以便返回,用于函数调用*******访存指令ldr/str/ldm/stm/swp单个字/半字/字节访问:ldr/str多字批量访问:ldm/stmswp:内存和寄存器互换指令swpr1,r2,[r0]把r0

7、存的地址的内容放到r1里面去,然后把r2的内容放到r0存的地址的内存中去swpr1,r1,[r0] ******************************合法立即数与非法立即数ARM指令都是32位,除了指令标记和操作标记外,本身只能附带很少位数的立即数。因此立即数有合法和非法之分。合法立即数:经过任意位数的移位后非零部分可以用8位表示的即为合法立即数**************协处理器cp15的操作指令mcr&mrcmrc用于读取cp15中的寄存器mcr用于写入cp15中的寄存器***************

8、****由于ldr/str每周期只能访问4字节内存,如果需要批量读取,写入内存时太慢,解决的方案就是ldm/stmldm/stm与栈的处理ldm(loadregistermutiple)stm(storeregistermutiple)**************************************************************

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。