从ARMv8-A开始出现了64位的ARM指令集, ARM官方将64位的ARM指令集叫做Aarch64

Aarch64汇编中寄存器

Aarch64微处理器中,程序员可以使用31个64位的通用寄存器x0 ~ x30,堆栈指针寄存器sp,指令指针寄存器pc。也可以只使用这些通用寄存器中的低32位,即w0~w30,wsp。ARM遵循ATPCS规则,Aarch64汇编语言函数前8个参数使用x0-x7寄存器(或w0-w7寄存器)传递,多于8个的参数均通过堆栈传递,并且返回值通过x0寄存器(或w0寄存器)返回
在使用软中断进行系统调时,系统调用号通过x8寄存器传递,用svc指令产生软中断,实现从用户模式到管理模式的切换。例如:

mov x0, 123 // exit code
mov x8, 93  // sys_exit() is at index 93 in kernel functions table
svc #0      // generate kernel call sys_exit(123);

关于系统调用syscall的系统调用号索引可以查看这里

https://elixir.bootlin.com/linux/latest/source/arch/sh/include/uapi/asm/unistd_64.h

Aarch64汇编语言

Aarch64汇编指令集所有指令的长度固定,每条指令是4字节(32位宽度),并且没有Thumb指令集。

访存指令

ARM32中的LDM、STM、PUSH、POP指令,在Aarch64中并不存在。取而代之的是LDP、STP指令,如一般在函数开头用来代替PUSH.
例如,用IDA Pro逆向的某个Aarch64SO库函数的开头和结尾:

STP      X24, X23, [SP,#var_40]!
STP      X22, X21, [SP,#0x40+var_30]
STP      X20, X19, [SP,#0x40+var_20]
STP      X29, X30, [SP,#0x40+var_10]
ADD      X29, SP, #0x40+var_10
....
SUB      SP, X29, #0x30
LDP      X29, X30, [SP,#0x150+var_120]
LDP      X20, X19, [SP,#0x150+var_130]
LDP      X22, X21, [SP,#0x150+var_140]
LDP      X24, X23, [SP+0x150+var_150],#0x40
RET

参考文献

arm64汇编语言
Wiki ARM Architecture
Aarch64 Register and Instruction Quick Start
ARM The Architecture for the Digital World
浅析基于ARM的Linux下的系统调用的实现

Aarch64汇编语言相关推荐

  1. 【汇编语言】【ARM扩展资料】汇编语言开发

    [ARM扩展资料]汇编语言开发 文章目录 [ARM扩展资料]汇编语言开发 一.指令格式 1.典型的A64指令格式 2.加减法的简单指令示例: 二.语句格式 1.汇编语言语句的通用格式: 三.显示程序 ...

  2. [ARM-assembly]-ARM64汇编语言学习笔记

    参考<ARM 64-Bit Assembly Language.pdf> ★★★个人博客导读首页-点击此处 ★★★ 文章目录 一.基础语法 1.先看一个示例 2.分配和初始化全局变量 3. ...

  3. 【汇编语言】【ARM扩展资料】数据表示

    [ARM扩展资料]数据表示 文章目录 [ARM扩展资料]数据表示 一.常量表达 1.常数 2.字符和字符串 3.符号常量 4.数值表达式 二.指示符 1.区段定义指示符 2.标号属性指示符 3.数据定 ...

  4. ARM Cortex-A 系列编程指南之ARMv8-A(AArch64浮点与NEON)

    目录 AArch64浮点与NEON技术 AArch64中NEON和浮点的新特性 NEON和浮点架构 浮点 标量数据和 NEON 浮点参数 AArch64 NEON指令格式 NEON 编码的替代方案 A ...

  5. ARM V8A体系结构-第七章 AArch64的浮点和NEON

    概述 ARM高级SIMD体系结构.相关实现和支持软件通常被称为NEON技术.AArch32(相当于ARMv7 NEON指令)和AArch64都有NEON指令集.这两种方法都可以大大加快大型数据集上的重 ...

  6. 汇编语言关于8086CPU多种寻址方式总结

    8086CPU对内存的寻址方式 参考王爽老师的<汇编语言>第四版,P164

  7. 汇编语言中将数据、代码、栈放入不同的段

    数据.代码.栈放入不同的段 在学习汇编语言,将数据.代码.栈放入不同的段.参考王爽老师的<汇编语言>第四版,对P133的汇编代码,进行了个人理解标注.仅供参考,存在错误之处,请大家斧正. ...

  8. 8086汇编语言精华笔记总结~

    目录 第一章 汇编语言的基础知识 1.计算机系统概述 硬件(Handware) 软件(Software) 2.汇编语言介绍 3.数据表示 1. BCD码 2. ASCII码 3. 真值和机器数 4. ...

  9. 用TensorRT针对AArch64用户的交叉编译示例

    用TensorRT针对AArch64用户的交叉编译示例 以下介绍如何在x86_64linux下为AArch64 QNX和Linux平台交叉编译TensorRT示例. 2.1. Prerequisite ...

最新文章

  1. java类引用接口的注释_java – 在接口类型上使用注释有什么好处?
  2. 时问轴php,php-发布到时间轴-过去的日期
  3. 算法:前K个最大的元素
  4. Net Core 2.1Filter里面获取Controller、Action,请求方法,请求头部,请求参数
  5. 基于CUDA的VTI介质有限差分正演模拟与逆时偏移及ADCIGs提取
  6. 苹果手机其他占内存很大去哪删除_Iphone内存总是不够用?原来这才是正确清理垃圾的方法,长见识了...
  7. linux镜像默认的安装位置,Linux下正确修改Docker镜像和容器的默认存储位置,亲测有效...
  8. 爬虫python能做什么-Python 爬虫学到什么样就可以找工作了?
  9. 深度解析MFC线程及机制
  10. 数据恢复软件FinalData
  11. CR blocks 创建
  12. python信息技术答案_高中信息技术《Python语言》模块试卷习题.doc
  13. asio strand
  14. 2655 切木头(二分)
  15. 在该系统上全局禁用了虚拟打印功能,不会为该虚拟机启用此功能。虚拟设备“serial0“”将开始断开连接。
  16. 计算机考研是属于工学呢还是理学呀,计算机考研是属于工学呢还是理学
  17. 【推荐系统】DUPN:Deep User Perception Network
  18. Python爬虫学习之爬取财富快讯
  19. P6LED显示屏价格报价用材规格与技术参数
  20. 201771010137 赵栋《面向对象程序设计(java)》第十一周学习总结

热门文章

  1. 精密空调内部培训资料
  2. 数据中心基础设施故障处理流程
  3. php实现小说字典功能_PHP实现获取并生成数据库字典的方法
  4. webbrowser 百度列表点击_前嗅ForeSpider采集教程:关键词的「检索列表」采集「检索结果」...
  5. Py之distance:distance的简介、安装、使用方法之详细攻略
  6. 成功解决 ERROR: An error occurred while performing the step: “Building kernel modules“. See  /var/log/nv
  7. TF之NN:利用神经网络系统自动学习散点(二次函数+noise+优化修正)输出结果可视化(matplotlib动态演示)
  8. HDFS的读文件、写文件过程
  9. HiveSQL常用数据处理语句
  10. 初识vue+elementUi