美文网首页
汇编 assembly

汇编 assembly

作者: MAXZhangZZ | 来源:发表于2018-05-30 15:11 被阅读0次

    汇编

    CPU & 内存

    • 控制线
      内存是读还是写
    • 地址线
      从内存地址中找出内存的值
    • 数据线
      从内存中取出数据交给CPU,传输数据的能力

    寄存器

    CPU直接交互的硬件,CPU 不会直接和内存交互而是从内存中去除数据放到寄存器中,由寄存器和CPU 交互

    arm64 有31个寄存器 每个寄存器有64位,x0-x31 也有w0-w31 不过w0是X0的低32位 如int 修饰的参数 放到寄存器里面就会是w0

    • PC寄存器
      CPU 马上要执行的指令 CPU通过PC寄存器来寻找将要执行指令。

    • bl指令
      arm64 有个mov指令,用来修改寄存器的值,但是mov指令不能修改pc寄存器 不能mov pc 0x113333333这种形式
      修改pc寄存器 只能是bl 和8086 jump差不多
      将下一条指令存到x30寄存器(lr寄存器 )

    • ret指令:
      表示函数的结束,如果函数有返回值的话,cpu会把计算的结果放到x0寄存器中,x0为函数的返回值。

    • 高速缓存
      对内存读取的速度太慢了,于是有了高速缓存


    • 特殊访问方式的存储空间,有FIFO特性
      sp寄存器,sp指向哪,哪就是栈。总指向栈顶 栈是有高到低

    • str ldr str是将 寄存器数据放到栈里面
      ldr 是将内存数据放入寄存器中

    2个变种stp ldp

    • cpsr 寄存器 标记寄存器 32位

    判断结果 看cpsr 决定某条指令是否被执行
    32位的最后4为 NZCV
    N 表示运算结果是否为正 负为N=1 非负 N=0
    Z判断结果是否为0 如果为0 Z=1 不为0 则Z=0
    C 运算时 进位为1 否则为0
    V 溢出 正数加正数

    • 内存分区
      代码区,放代码的 可读可写 可执行
      栈区域 存放参数 局部变量 可读可写
      堆区域 可读可以
      全局变量 可读可写
      常量区 可读

    相关文章

      网友评论

          本文标题:汇编 assembly

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