码迷,mamicode.com
首页 > 其他好文 > 详细

汇编指令简单个人理解

时间:2019-05-13 16:04:32      阅读:165      评论:0      收藏:0      [点我收藏+]

标签:href   .com   increase   ase   https   通用   特殊功能   register   reg   

ARM语言中LDMIA R1!,{R0,R4-R12};是什么意思

LDMIA 中的 I 是 increase 的缩写,A 是 after 的缩小,LD加载(load)的意思R1后面的感叹号“!”表示会自动调节 R1里面存的指针

所以整句话意思是任务栈R1的存储地址由低到高,将R1存储地址里面的内容手动加载到 CPU 寄存器 R0,R4-R12里
还有一种是STMDB R1!, {R0,R4-R12} 这就和上面反过来了,ST是存储(store)的意思,D是decrease的意思,B是before的意思,整句话就是R1的存储地址由高到低递减,将R0,R4-R12里的内容存储到R1任务栈里面。

 

IA:Increase After


传输“之后”“递增”的意思R1有初始值,指向一个存储地址
依次将R0,R4到R12的值传入相应的地址,每次传输之后递增R1指向的存储地址,因为是32位,每次递增的地址应该是4bytes

Load addresses to a register using LDR Rd, =label

 LDR r0,[r1]        //将R1中的值存到r0中

 LDR r1,[r2,#16]     //将(r2+16)地址中的内容存到r1中

 LDR r1,[r2],#4      //将r2地址中的内容存到r1中,同时r2=r2+4

 

LDR   ---   Load from memory into a register
STR   ---   Store from a register into memory

 

它们只能被专用的 MSR 和 MRS 指令访问,而且它们也没有存储器地址。

MRS <gp_reg>, <special_reg> ;读特殊功能寄存器的值到通用寄存器

MSR <special_reg>, <gp_reg> ;写通用寄存器的值到特殊功能寄存器

str r0,[r2]:将r0的值写入r2内保存的地址里,r2内存放着任务控制块的首地址,r0中存放着当前最新的堆栈栈顶指针,即把当前栈顶指针写入当前任务控制块的第一个字段

汇编指令简单个人理解

标签:href   .com   increase   ase   https   通用   特殊功能   register   reg   

原文地址:https://www.cnblogs.com/wangzhihong-102511/p/10857031.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!