• 汇编指令简单个人理解


    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中存放着当前最新的堆栈栈顶指针,即把当前栈顶指针写入当前任务控制块的第一个字段

  • 相关阅读:
    心得sql空值的应用
    C#开发GIS应用简明教程(二)
    网页右下角弹出窗口
    弹出输入框方法汇总
    C#开发GIS应用简明教程(三)
    防刷新的另一种方法
    相册
    网站下载速度限制方法
    .NET下多线程初探
    用DECODE做交叉报表
  • 原文地址:https://www.cnblogs.com/wangzhihong-102511/p/10857031.html
Copyright © 2020-2023  润新知