美文网首页
4. ARM寄存器

4. ARM寄存器

作者: 郑行_aover | 来源:发表于2019-03-20 11:51 被阅读0次

    1. 简书-ARM寄存器讲解
    2. ARM寄存器解析
    3. ARM64汇编-寄存器和指令
    4. 堆栈基础-windows
    5.堆栈基础-linux篇-32位

    1. 关于寄存器的说明

    • R0-R3:用作传入函数参数,传出函数的返回值。在子程序调用之前,可以将r0-r3用于任何用途,被调用函数在返回之前不必恢复r0-r3.如果调用函数需要再次使用这几个寄存器的内容,则必须保留这些内容。
    • R4-R11:被用来存放函数的局部变量。如果被调用函数使用了这些寄存器,在返回之前必须恢复这些寄存器的值
    • R12: 是内部调用暂时寄存器ip。它在过程链接胶合代码中用于此角色。可以将其用于任何用途。被调用函数在返回之前不必恢复r12.
    • R13: 是栈指针SP,指向栈顶。.它不能用于任何其它用途。sp中存放的值在退出被调用函数时必须与进入时值相同。
    • R14: 是链接寄存器LR。如果保存了返回地址,则可以在调用之间将r14用于其它用途,程序返回时要恢复。
    • R15: 是程序计数器PC。用于执行可执行文件中的指令地址。

    2. PC寄存器

    • 为指令指针寄存器,它指示了CPU当前要读取指令的地址
    • 在内存或者磁盘上,指令和数据没有任何区别,都是二进制信息
    • CPU工作时候把有的信息看做指令,有的信息看做数据,为同样的信息赋予不同的意义
      • 比如 比如 1110 0000 0000 0011 0000 1000 1010 1010
      • 可以当做数据 0xE003008AA,也可以当做指令 mov x0, x8
    • CPU根据什么将内存中的信息看做指令
      • CPU将PC指向的内容看做指令
      • 如果内存中某段内容被CPU执行过,那么它所在的内存单元必然被PC指向过。

    3. SP、fp、LR寄存器

    • sp寄存器时刻保存我们的栈顶的地址
    • fp寄存器,会保存我们的栈底的地址
    • LR 程序链接寄存器:1. 用于保存函数的返回地址。 2. 异常处理后的返回地址,例如中断。

    4. CPSR、SPSR

    • CPSR当前状态寄存器,其中每一位的bit都有意义。用于指示正负、加减、中断等的状态
    • SPSR 系统状态寄存器,用于异常保护的CPSR的备份,异常时保存CPSR的值。异常退出时将该值恢复到CPSR,以保障程序正常运行。

    5. 关于堆栈寄存器

    • rsp、esp、sp:栈指针寄存器,内存放着一个指针,永远指向系统栈的栈顶。(sp16位| esp32位|rsp64位)
    • rbp、ebp、bp:基址指针寄存器,该指针永远指向系统栈上栈帧的底部。
    • rip、eip、ip: 指令寄存器,该指针永远指向下一条待执行的指令地址。
    • ss:寄存器存放的段地址。
      说明: PC和ip其实是一回事儿。都是指令寄存器,指向当前执行指令的下一条指令。

    相关文章

      网友评论

          本文标题:4. ARM寄存器

          本文链接:https://www.haomeiwen.com/subject/oxoamqtx.html