AArch64中的寄存器

news2024/9/24 5:28:48

目录

 

通用寄存器

其他寄存器

系统寄存器


 

通用寄存器

大多数A64指令在寄存器上操作。该架构提供了31个通用寄存器。 每个寄存器可以作为64位的X寄存器(X0..X30)使用,或者作为32位的W寄存器(W0..W30)使用。这两种是查看同一个寄存器的两种不同方式。

例如,这个寄存器图示显示了W0是X0的低32位,W1是X1的低32位:

440e167d9b2e447881c69468b749e69d.png

图6-1:寄存器图示

对于数据处理指令,选择X或W决定了操作的大小。使用X寄存器将得到64位的计算结果,使用W寄存器将得到32位的计算结果。

这个示例执行了一个32位整数加法:

ADD W0, W1, W2

这个示例执行了一个64位整数加法:

ADD X0, X1, X2

当写入W寄存器时,如上例所示,64位寄存器的高32位将被清零。

有一组单独的32个寄存器用于浮点和向量操作。这些寄存器是128位的,但像通用寄存器一样,可以通过几种方式访问。Bx是8位,Hx是16位,以此类推,到Qx是128位。 

5c428890cb7e4955851f8b92a7dfc895.png图6-2:寄存器图示

你使用的寄存器名称决定了计算的大小。这个示例执行了一个32位浮点加法:

FADD S0, S1, S2

这个示例执行了一个64位浮点加法:

FADD D0, D1, D2

这些寄存器也可以被称为V寄存器。当使用V形式时,寄存器被视为一个向量。这意味着它被看作包含多个独立值,而不是单个值。这个示例执行了向量浮点加法:

FADD V0.2D, V1.2D, V2.2D

这个示例执行了向量整数加法:

ADD V0.2D, V1.2D, V2.2D

其他寄存器

以下是一些A64中你应该了解的其他寄存器:

  • 零寄存器,XZR和WZR,总是读取为0并忽略写入。
  • 你可以使用堆栈指针(SP)作为加载和存储的基础地址。你还可以使用堆栈指针与一组有限的数据处理指令,但它不是常规的通用寄存器。Armv8-A有多个堆栈指针,每个都与特定的异常级别相关联。当SP在指令中使用时,它指的是当前的堆栈指针。异常模型指南解释了如何选择堆栈指针。
  • X30用作链接寄存器,可以称为LR。用于从异常返回的单独寄存器,ELR_ELx,在异常模型指南中有更详细的讨论。
  • 程序计数器(PC)不是A64中的通用寄存器,它不能与数据处理指令一起使用。PC可以通过以下方式读取: ADR Xd, . ADR指令返回一个标签的地址,根据当前位置计算。点(.)意味着“这里”,所以显示的指令是返回它自己的地址。这等同于读取PC。一些分支指令和一些加载/存储操作,隐式地使用PC的值。

在A32和T32指令集中,PC和SP是通用寄存器。 在A64指令集中,情况并非如此。

系统寄存器

除了通用寄存器外,架构还定义了系统寄存器。系统寄存器用于配置处理器以及控制诸如内存管理单元(MMU)和异常处理等系统。

系统寄存器不能直接由数据处理或加载/存储指令使用。相反,系统寄存器的内容需要先读入一个X寄存器,进行操作,然后再写回系统寄存器。有两条专门的指令用于访问系统寄存器:

MRS Xd, <系统寄存器>

将系统寄存器读入Xd。

MSR <系统寄存器>, Xn

将Xn写入系统寄存器。

系统寄存器通过名称指定,例如SCTLR_EL1:

MRS X0, SCTLR_EL1

将SCTLR_EL1读入X0。

系统寄存器名称以_ELx结尾。_ELx指定访问寄存器所需的最低权限。例如: SCTLR_EL1 需要EL1或更高权限。 SCTLR_EL2 需要EL2或更高权限。 SCTLR_EL3 需要EL3权限。 尝试使用不足的权限访问寄存器将导致异常。

有时你会看到_EL12或_EL01。这些在虚拟化中使用。 有关更多信息,请参阅虚拟化指南。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2053685.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PyTorch——transforms

接着上一篇&#xff0c;我们这一篇讲transforms 1、什么是transform 首先transform是来自PyTorch的一个扩展库——【torchvision】&#xff0c;【torchvision】这个库提供了许多计算机视觉相关的工具和功能&#xff0c;能够在神经网络中&#xff0c;将图像、数据集、预处理模型…

[Winform] Chart获得当前点的X和Y值

在利用C#控件绘制曲线图后&#xff0c;有时我们需要通过鼠标查看数据点的值信息&#xff0c;常用的方法就是利用chart控件的chart1_GetToolTipText(object sender, ToolTipEventArgs e)事件来获取数据点的信息&#xff0c;如下我用两个label来显示获取的数据点的值 相关代码如下…

【手撕数据结构】链式二叉树

目录 链式二叉树的结构及其声明链式二叉树的四种遍历方式前序遍历中序遍历&#xff08;中根遍历&#xff09;后序遍历层序遍历概念思路分析详细代码 求树的节点个数变量累加法(错误)分治递归法 求树的叶子节点个数警惕空指针正确代码 求第k层节点个树思路分析及规则明细代码详细…

POK´ELLMON:在宝可梦战斗中实现人类水平的人工智能

人工智能咨询培训老师叶梓 转载标明出处 最近&#xff0c;由美国乔治亚理工学院的Sihao Hu、Tiansheng Huang和Ling Liu发表的论文介绍了POKELLMON&#xff0c;这是一个开创性的基于大模型&#xff08;LLM&#xff09;的具身智能体&#xff0c;它在战术战斗游戏中&#xff0c;特…

【Android 笔记】Android APK编译打包流程

前言 本文将介绍Android从一个项目打包成APK的过程&#xff0c;其中涉及Android Java和Kotlin文件、资源文件、清单文件、依赖jar包和so库等在打包过程中处理。 步骤 总体的打包流程如下图&#xff0c;下面就介绍下详细的打包步骤。 1、将aidl文件编译成java文件 在构建过程中…

2024音频剪辑指南:探索四大高效工具!

音频剪辑不仅仅是技术活&#xff0c;更是一种艺术创作&#xff0c;它能够让声音更加生动、更具感染力。今天&#xff0c;我们就来探索几款优秀的音频剪辑工具。 福昕音频剪辑 链接&#xff1a;www.pdf365.cn/foxit-clip/ 福昕音频剪辑是一款界面简洁、操作直观的音频编辑软件…

详解安卓辅助功能服务AccessibilityService(无障碍服务,微信抢红包助手原理)

前言 在手机的更多设置或者高级设置中&#xff0c;我们会发现有个无障碍的功能&#xff0c;很多人不知道这个功能具体是干嘛的&#xff0c;包括我们开发也很少接触这部分功能&#xff0c;以至于对这块不甚了解。前段时间在同事的安利下去了解了下这部分功能。在这里和大家浅谈下…

scikit-learn特征预处理

特征预处理 什么是特征预处理 通过一些转换函数&#xff0c;将特征数据转换成更适合算法模型的特征数据的过程 数值数据的无量纲化&#xff1a; 归一化标准化 特征预处理API sklearn.preprocessing为什么进行无量纲化 通过欧式距离公式计算两个约会对象是否属于同一类别 …

使用HTML和cgi实现网页登录功能

0.HTML文件结构 一.HTML文件 1.test.html <!DOCTYPE html> <html><head><meta charset"utf-8"><title>菜鸟教程(runoob.com)</title></head><body><!-- 将结果提交给/cgi-bin/test.cgi下 --><form actio…

联盟推广计划:释放SaaS企业增长潜力

在SaaS行业&#xff0c;用户增长是企业成功的关键。本文深入探讨联盟推广计划&#xff0c;分析其核心特点和优势&#xff0c;以及如何实施这一策略以实现用户增长和品牌扩展。随着SaaS市场的不断成熟&#xff0c;企业越来越需要创新的营销策略来突破增长瓶颈。PartnerShare联盟…

2025舜宇内推码

舜宇光学集团校招 【2025内推码】 DSwNQ9yu DSwNQ9yu DSJXN8Mr 舜宇光学科技2025校招内推&#xff01;冲冲冲&#xff01; 光学龙头-舜宇集团2025届全球校园招聘正式启动&#xff01;&#xff01;&#xff01; 提供住宿&#xff08;硕士单人间&#xff0c;独立卫浴&#xff0…

【大数据平台】性能优化与成本控制

欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;欢迎订阅相关专栏&#xff1a; 工&#x1f497;重&#x1f497;hao&#x1f497;&#xff1a;野老杂谈 ⭐️ 全网最全IT互联网公司面试宝典&#xff1a;收集整理全网各大IT互联网公司技术、项目、HR面试真题.…

multimodel ocr dataset

InternLM-XComposer2-4KHD InternLM-XComposer2-4KHD a light-weight Vision Encoder OpenAI ViT-Large/14Large Language Model InternLM2-7B, 这篇论文采用的是一种动态分辨率的输入&#xff1b; 全图有一个global view,resize到336*336&#xff1b; 然后把图片resize再pad…

PointPillars算法解析

说明 本篇主要对基于LIDAR的3D目标检测算法PointPillars算法论文进行解析。 论文地址&#xff1a;https://arxiv.org/pdf/1812.05784.pdf 代码地址&#xff1a;https://github.com/open-mmlab/OpenPCDet 参考链接1&#xff1a;https://zhuanlan.zhihu.com/p/357626425 参考链接…

探索数据结构:红黑树的分析与实现

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ &#x1f388;&#x1f388;养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; 所属专栏&#xff1a;数据结构与算法 贝蒂的主页&#xff1a;Betty’s blog 1. 红黑树的介绍 1.1. 红黑树的引入 我们前面学习了AVL树&#xff0c;…

re正则模块

正则是一个十分重要且基础的模块 学习正则模块就要了解正则的一些基本字符 正则的基本方法有很多 但是大体上分为三种匹配 分割 替换 匹配有match search fullmatch findall finditer 注意finditer得到结果是一个可迭代类型需要遍历才能得到结果 使用group方法就可以查看返回…

【安全】XSS

文章目录 xss1.反射型XSS Payload的一些情况010203040506070809101112131415 HTML文档处理过程0x01 HTML解析0x02 URL解析0x03 JavaScript 解析 2.DOM型Ma Spaghet!JefffUgandan KnucklesRicardo MilosAh Thats HawtLigmaMafia 3.存储型 xss 用户的输入没有进行很好的过滤&…

对比新旧两个数据库表之间的差异

ServerDatabaseVersionUpdateHelper 一个对比不同数据库之间表数据差异的开源软件&#xff0c;欢迎大家到github上点赞 应用下载地址 功能介绍 对比表结构差异和表数据之间的差异 并根据查询生成新的更新sql语句 使用 1. 填写新旧数据库配置 server数据库地址;port数据库端…

报错:xx in xx cannot be applied to ‘()‘ @Data注解的无参构造方法不生效(原因及解决办法)

问题描述 创建User类时&#xff0c;添加了Data注解和User的构造方法 import lombok.Data;Data public class User {private Long id;private String name;private Integer age;private String email;public User(Long id, String name, Integer age, String email) {this.id …

机器学习--常见算法总结

有监督学习算法 1. 线性回归算法 概念&#xff1a;线性回归是一种统计方法&#xff0c;用于预测一个变量&#xff08;因变量&#xff09;与一个或多个自变量&#xff08;特征变量&#xff09;之间的关系。目标是通过线性方程建立自变量和因变量之间的关系模型。 作用&#x…