Arm体系结构
文章平均质量分 82
Arm体系结构
Aspiresky
一步一步向前走!
展开
-
浅析ARMv8体系结构:原子操作
在编程中,当多个处理器或线程访问共享数据,并且至少有一个正在写入时,操作必须是原子的,这意味着数据访问必须被视为相对于其他处理器的单个操作,以避免数据竞争条件。原子操作的实现依赖处理器硬件提供支持,在不同的处理器体系结构上,原子操作会有不同的实现,例如在x86体系结构下,通常使用锁缓存/总线的方式实现原子操作。一种是经典的独占内存访问机制,也叫做LL/SC(Load-Link/Store-Conditional),早期ARM体系结构下的原子操作都是基于这种方式实现;原创 2024-02-27 00:49:09 · 1761 阅读 · 0 评论 -
ARMv8处理器执行环境
当我们运行一个异常处理器时,处理器的处理状态会保存到保存处理状态寄存器(Saved Process StatusRegister,SPSR)里,这个寄存器非常类似于ARMv7架构中的CPSR。除了上面介绍的通用寄存器和特殊寄存器之外,ARMv8架构还定义了很多的系统寄存器,通过访问和设置这些系统寄存器来完成对处理器不同的功能配置。ARMv8架构支持4个异常等级,每一个异常等级都有一个专门的SP寄存器SP_ELn,如处理器运行在EL1时选择SP_EL1寄存器作为SP寄存器。原创 2023-02-08 23:11:59 · 1186 阅读 · 0 评论 -
浅析ARMv8体系结构:A64指令集
LDP和STP指令支持3种寻址模式。它以Xn/SP寄存器的值为基地址,然后读取Xn/SP寄存器的值+ imm地址的值到X/1寄存 器,读取Xw/SP寄存器的值+ imm+8地址的值到R2寄存器中。它以Xn/SP寄存器的值为基地址,然后把XZ1寄存器的内容存储到[Xrt/SP + imm]处,把 Xt2寄存器的内容存储到[Xn/SP+inmi+8]处。这条指令的意义是,将当前PC寄存器的地址的 + 0x80000的偏移,取出地址内容填充到x7寄存器中。汇编代码里常常会使用标签(label)来标记代码片段。原创 2024-01-09 22:45:14 · 1432 阅读 · 0 评论 -
Aarch64内存分页机制
Aarch64架构支持4KB、16KB以及64KB的granule size:原创 2023-02-08 23:08:25 · 289 阅读 · 0 评论 -
浅析ARMv8体系结构:异常处理机制
异常处理指的是处理器在运行过程中发生了外部事件,导致处理器需要中断当前执行流程转而去处理异常事件的一种机制。在Intel处理器的术语中,中断与异常被分开来描述,但在ARMv8体系结构中,异常和中断统一被称为异常处理。原创 2023-09-03 18:26:26 · 1815 阅读 · 0 评论 -
浅析ARMv8体系结构:Aarch64过程调用标准
概述Aarch64过程调用标准(AAPCS64)描述了在ARM 64位体系结构下应用程序二进制接口(ABI)在过程调用中应遵循的调用约束,涉及寄存器使用规则、堆栈布局、函数参数传递以及返回值保存等内容。基本程序执行寄存器ARM 64位处理器中包含了31个64位通用寄存器,依次为r0-r30:在64位上下文中,使用x0-x30的命名引用寄存器;在32位上下文中,则使用w0-w30的命名来使用寄存器。此外,处理器还提供了栈指针寄存器(SP)。对于所有基本程序执行寄存器在过程调用中的作用描述如下表所示:原创 2020-07-07 08:34:36 · 5351 阅读 · 1 评论 -
浅析ARMv8体系结构:Memory Type
ARMv8内存模型将内存分成了Normal和Device两种类型,不同的内存类型支持的属性也存在差异,其中,Normal类型主要应用于常规的系统内存,支持读写等操作;而Device类型,顾名思义,主要针对于设备内存,在访问时会存在更多的限制。原创 2024-01-09 23:16:53 · 848 阅读 · 0 评论