您的位置 首页 设计

ARM指令中的内存拜访指令的总结

内存访问指令LDR,STR,LDM,STMLDR:表示从内存中读取数据到寄存器当中,如ldrr0,[r2];表示从r2指向的内存单元读取数据保存到r0当中STR:表示…

内存拜访指令

LDR,STR,LDM,STM

LDR:一共从内存中读取数据到存放器傍边,如ldr r0,[r2];一共从r2指向的内存单元读取数据保存到r0傍边

STR:一共把存放器傍边的数据保存到内存单元傍边,如str r1,[r2];一共把r1中的值保存到地址为r2指向的内存单元傍边

LDM/STM是指内存拜访指令,用一条指令就可以读取多个数据,格局如下

LDM{cond} {!} {^}

STM{cond} {!} {^}

其间cond代表条件码

1.ia (incrementafter):过后递加方法

2.ib (incrementbefore):事前递加方法

3.da(decrementafter):过后递减方法

4.db(decrementbefore):事前递减方法

rn保存内存单元的地址,假如加上!,一共,使用后更新,等于下一个内存单元的地址

一共存放器列表,最终的^一共假如register_list傍边有pc存放器,它一共指令碑文后,将spsr的值自动到cpsr傍边,常用于中止函数的回来;假如register_list傍边没有pc,^一共操作的是用户形式下的存放器,而不是当时特权形式下的存放器.指令中的对应联系,编号低的存放对应内存中低地址的单元,高编号的存放器对应高内存地址.

irq_handler:sublr, lr, #4               ;核算回来地址stmdbsp!, {r0-r12, lr}      ;事前递减,!使得sp = sp -14*4,lr保存在高地址傍边sp, r0保存在低地址傍边 sp - 14*4ldrr2, = int_handler        ;中止处理函数blr2                        ;实在中止处理ldrlr, = int_return;        ;从中止中回来irq_retrun:ldmiasp!, {r0-r12, lr}^     ;^将spsr拷贝到cpsr,!使得sp = sp + 14*4,r0中的值是低地下中的sp,lr中的得到是高地址sp +14*4指向的值

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ziliao/sheji/263990.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部