美文网首页
寄存器、汇编指令

寄存器、汇编指令

作者: natinalBoy | 来源:发表于2018-05-13 17:18 被阅读0次

汇编初识

寄存器 与 内存

寄存器:

1. sp寄存器:热议时刻会保存栈底的地址。
2. fp寄存器:也称为x29寄存器,属于通用寄存器,在某些时刻我们利用它保存栈顶的地址。
3. x30寄存器:存放是函数的返回地址;当ret指令执行时刻,会寻找x30寄存器保存的地址值。
4. 浮点寄存器:
  D0 - D31(64位) ,S0 - S31存放的是低地址
  S0 - S31(32位)
5. 向量寄存器 128位:V0-V31
6. 状态寄存器CPSR(current program status register):
    * CPSR的低8位(包括I、F、T和M[4:0])称为控制位,程序无法修改,除非CPU运行于特权模式下,程序才能修改控制位!
    * N、Z、C、V均为条件码标志位。它们的内容可被算术或逻辑运算的结果所改变,并且可以决定某条指令是否被执行! 

状态寄存器链接:https://www.jianshu.com/p/9e0d8d6199e6

函数参数:

1. 函数的参数存放位置:X0到X7(W0到W7)这8个寄存器里面,如果超过8个参数,就会入栈。
2. 函数的局部变量存放位置:存放在栈里面。
3. cup变量临时存放位置:
ARM64,X0-X30, XZR(零寄存器) --- 64位
ARM64,W0-W30, WZR(零寄存器) --- 32位
8086,CS,DS,SS,ES四个寄存器

注意点:

1、ARM64开始,取消32位的 LDM,STM,PUSH,POP指令! 取而代之的是ldr\ldp  str\stp
2、ARM64里面 对栈的操作是16字节对齐的

st指令:

  • stur指令,把寄存器的值(32位)写进内存
  • stp/str指令,把寄存器的值(128位/64位)写进内存

ld指令:

  • ldr指令,从内存地址取一个单个的32位值
  • dlp指令,从内存地址取一个单个的64位值

bl指令:

  1. 将下一条指令的地址放入lr(x30)寄存器
  2. 转到标号处执行指令

ret指令:

  • 在xcode中,lr代表的是x30寄存器的值,通过底层指令提示CPU此处作为下条指令地址

相关文章

  • IOS arm64常用的汇编

    导论 生成汇编文件 寄存器 arm64 汇编条件域 arm64 汇编指令 总结 1. 生成汇编文件 2. 寄存器 ...

  • 汇编语言

    @[toc] 汇编语言 汇编语言的主体是汇编指令 操作 寄存器bx的内容送到ax中 机器指令 1000100111...

  • 基础的汇编指令学习-2019-05-09

    基础的汇编指令学习 转载请标注出处:CSDN ARM 指令记录 指令的条件域 寄存器学习 寄存器 显示opcode...

  • ARM64 学习

    iOS汇编 真机 arm64汇编,GNU 模拟器 x86, AT&T 汇编 寄存器 指令 堆栈 通用寄存器 64b...

  • 1.《汇编语言》-王爽第三版学习笔记 基础知识

    机器指令 && 汇编指令对比:操作:寄存器 BX 的内容送到 AX 中机器指令:1000100111011000汇...

  • 9.汇编-JCC

    9.汇编-JCC 之前可以修改EIP寄存器的指令JMP,CALL,RETN 所有JCC指令的动作->根据标志寄存器...

  • 00-汇编语言

    程序的本质 寄存器与内存 编程语言的发展 汇编语言的种类 常见的汇编指令 寄存器 有16个常用寄存器rax、rbx...

  • 6.汇编-修改EIP的指令

    6.汇编-修改EIP的指令 EIP寄存器 EIP寄存器表示CPU下次执行的位置 JMP指令 JMP指令相当于给EI...

  • 认识ARM64汇编

    [TOC] 之前说过学习汇编就是学习寄存器和指令,查看代码请连接真机。 寄存器 在arm64汇编中寄存器是64bi...

  • 汇编基础

    汇编指令速查 汇编中各寄存器的作用4个数据寄存器(EAX、EBX、ECX和EDX)2个变址和指针寄存器(ESI和E...

网友评论

      本文标题:寄存器、汇编指令

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