首页 > 其他 > 详细

浅谈汇编

时间:2019-11-26 13:01:47      阅读:121      评论:0      收藏:0      [点我收藏+]

创建编写汇编文件:

首先创建一个空文件技术分享图片

 

 命名方式以.s结尾

第一行需要声明一个代码段  .text

第二行声明一个global + 方法名    .global test

技术分享图片

 

 指令:

汇编代码注释在行前加上 ;

  • ret:返回
  • mov指令:目的寄存器,源操作数   举例:mov x0, #0x8   将8赋值给x0
  • add指令:将两个寄存器相加
  • sub指令:将两个寄存器相减
  • cmp指令:比较指令 操作数1  操作数2:cmp x0, x1  用x0减去x1,并将结果放到cpsr(程序状态寄存器)寄存器里
  • b 指令:跳转指令,相当于jump   b 目标地址
  • bl指令:带返回的跳转指令,与b指令的区别是使用bl指令,ret指令才会生效

内存操作:

1、load,从内存中装载数据

  • ldr指令:从内存中读取数据  ldr  x0, [x1]
  • ldur指令:技术分享图片,一般如果数据为负数,会用ldur
  • ldp指令:从内存中读取数据,放到一对寄存器中  ldp w0, w1, [x2, #0x10]

2、store,往内存中存储数据

  • str指令:往内存中写入数据   str w0, [x1],将w0的数据写入到x1中
  • stur指令:参考ldur指令
  • stp指令:参考ldp指令
  • wzr指令:零寄存器技术分享图片
  • xzr指令:零寄存器

程序计数器:

  • pc(Program Counter)
  • 记录CPU当前指令是哪一条指令
  • 存储着当前CPU正在执行的指令的地址
  • 类似于8086汇编的IP寄存器

堆栈寄存器:

  • sp(Stack Pointer)
  • fp(Frame Pointer),也就是x29

链接寄存器:

  • lr(Link Register),也就是x30
  • 存储着函数的返回地址

条件域:

指令的条件码:

  • EQ:equal,相等
  • NE:not equal,不相等
  • GT:great than,大于
  • GE:great equal,大于等于
  • LT:less than,小于
  • LE:less equal,小于等于

技术分享图片

 

 

CPSR寄存器-状态寄存器

技术分享图片

 

 技术分享图片

 

 

浅谈汇编

原文:https://www.cnblogs.com/Jacksun11/p/11934270.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!