ARM内核:嵌入式时代的核心引擎

引言

在当今智能设备无处不在的时代,ARM(Advanced RISC Machines)处理器凭借其高性能、低功耗的特性,成为智能手机、物联网设备、汽车电子等领域的核心引擎。作为精简指令集(RISC)的典范,ARM核通过独特的架构设计和技术创新,重塑了芯片产业的格局。

本文将从技术特点、工作模式、发展历程等方面,全面解析ARM核的核心竞争力

CPU内核概述

CPU(Central Processing Unit,中央处理器)是计算机或其他电子设备的核心部件,主要负责执行程序指令、处理数据和控制计算机的其他硬件部件。

CPU的主要组成部分

控制单元(Control Unit, CU)控制单元负责从内存中读取指令,并将其解码为一系列控制信号,以指导其他部件完成相应的操作。它还负责管理指令的执行顺序和流程。

算术逻辑单元(Arithmetic Logic Unit, ALU)ALU是CPU的核心部分,负责执行所有算术运算(如加法、减法、乘法、除法)和逻辑运算(如与、或、非、异或)。它的性能直接影响CPU的整体处理能力。

寄存器组(Registers)寄存器是CPU内部的高速存储单元,用于暂存指令、数据和地址。常见的寄存器包括:

  • 状态寄存器(如CPSR、SPSR):存储CPU的状态信息。
  • 程序计数器(PC):存储下一条要执行的指令的地址。
  • 指令寄存器(IR):存储当前正在执行的指令。
  • 通用寄存器(如R0-R15):用于存储用户数据和中间结果。

缓存(Cache)缓存是位于CPU和主内存之间的高速存储器,用于减少CPU访问内存的延迟。缓存通常分为一级缓存(L1 Cache)和二级缓存(L2 Cache),有些CPU还配备了三级缓存(L3 Cache)。缓存的大小和速度对CPU的性能有重要影响。

总线接口单元(Bus Interface Unit, BIU)BIU负责管理CPU与外部设备(如内存、输入输出设备)之间的数据传输。它通过总线与这些设备通信,确保数据的高效传输。

CPU的分类:

按字长分类

  • 8位微处理器:早期的微处理器,例如Intel 8080,主要用于简单的嵌入式系统。
  • 16位微处理器:例如Intel 8086,是早期个人计算机(如IBM PC)的核心部件。
  • 32位微处理器:例如Intel Pentium系列、ARM Cortex-A系列,广泛应用于现代计算机和移动设备。
  • 64位微处理器:例如Intel Core系列、AMD Ryzen系列、苹果M系列芯片,支持更大的内存寻址空间和更高的性能,是当前主流的处理器架构。

按架构分类

  • CISC(Complex Instruction Set Computer):复杂指令集计算机,指令集庞大且复杂,单条指令可执行多步操作(如内存存取、算术运算、逻辑判断等),直接支持高级语言操作。
  • RISC(Reduced Instruction Set Computer):精简指令集计算机,指令集简洁且长度固定,通过组合简单指令完成复杂任务,强调硬件流水线优化和单周期指令执行。

CPU的主要性能指标

  • 主频(Clock Speed)

主频是指CPU的时钟频率,单位是赫兹(Hz)。主频越高,CPU在单位时间内可以执行的指令数量越多。例如,3.5 GHz的CPU每秒可以执行35亿次时钟周期。

  • 核心数(Cores)

现代CPU通常包含多个核心(多核处理器),每个核心都可以独立执行指令。多核处理器可以提高多任务处理能力和并行计算能力。例如,四核处理器可以同时处理四个任务,而八核处理器可以处理更多任务。

  • 缓存大小(Cache Size)

缓存的大小直接影响CPU访问数据的速度。较大的缓存可以减少CPU访问主内存的次数,从而提高性能。例如,L1缓存通常为几十KB,L2缓存为几百KB到几MB,L3缓存为几MB到几十MB。

  • 功耗(Power Consumption)

CPU的功耗是衡量其能效的重要指标。低功耗的CPU更适合移动设备和嵌入式系统,而高性能的CPU通常功耗较高,适合桌面计算机和服务器。

CPU架构

ARM架构:

ARM架构的特点:

  • 指令简单高效:ARM架构采用精简指令集,指令数量少且简单,大多数指令在一个时钟周期内完成,提高了处理器的执行效率。
  • 低功耗设计:ARM架构注重低功耗,特别适合移动设备、嵌入式系统和物联网设备,能够在较低功耗下提供较高的计算性能。
  • 高集成度:ARM芯片通常采用SoC(System on Chip)设计,将CPU、GPU、通信模块、存储控制器等多种功能集成在同一芯片上,降低了成本和设备尺寸。

ARM架构的形成:

ARM架构最初由Acorn计算机公司在1985年开发,用于其个人计算机。1990年,Acorn与苹果和VLSI Technology合作成立了ARM公司(Advanced RISC Machines)。1991年,ARM公司推出了第一款商业化的ARM架构处理器——ARM6。

发展:

  • Cortex系列:2005年,ARM公司推出了Cortex系列处理器,分为A、R和M三个系列,分别针对不同的市场:

    • Cortex-A系列:应用程序型处理器,适用于智能手机、平板电脑和服务器。

    • Cortex-R系列:实时型处理器,适用于嵌入式系统和实时应用。

    • Cortex-M系列:微控制器型处理器,适用于微控制器和物联网设备。

  • ARMv8架构:2011年,ARM公司推出了ARMv8架构,支持64位计算,进一步提升了性能和能效。

  • ARMv9架构:2021年,ARM公司推出了ARMv9架构,支持人工智能、机器学习和安全特性,为未来的高性能计算和物联网应用奠定了基础。

ARM公司不直接生产芯片,而是将其架构授权给其他公司,允许它们在ARM架构基础上设计和制造处理器。这种模式使得ARM架构能够快速扩展到多个领域,并形成了丰富的生态系统。

SoC(System on Chip)

SOC(System on Chip,片上系统)是一种超大规模集成电路,它将整个信息处理系统集成到一块芯片上。简单来说,SOC芯片是在中央处理器(CPU)的基础上,扩展了多种专用接口和功能模块,形成了一个完整的系统级芯片。它相当于一个微型的“计算机”,能够完成复杂的任务和功能。
SOC(System on Chip)是现代电子设备的核心部件,它将多个功能模块集成到一块芯片上,实现了高性能、低功耗、小尺寸和高集成度的设计。

MIPS架构

MIPS(Million Instructions Per Second)是由美国MIPS技术公司开发的RISC(精简指令集)架构,专注于高性能32/64位处理器设计,强调指令效率与低功耗。

技术特点:
  • 高效流水线:支持5级流水线,优化指令吞吐量。
  • 可扩展性:提供MIPS32(32位)与MIPS64(64位)版本,适应不同计算需求。
  • 多线程支持:部分型号支持多线程技术(如MIPS MT),提升并行处理能力。

IP授权模式:与ARM类似,授权处理器内核设计给第三方厂商(如龙芯、联发科)。

PowerPC架构

PowerPC(Performance Optimization With Enhanced RISC)是IBM联合苹果、摩托罗拉开发的RISC架构,源自IBM POWER系列,强调高性能与实时性。

技术特点
  • 超标量设计:支持多指令并行发射,提升计算效率。
  • 高可靠性:内置ECC校验与冗余设计,适用于关键任务场景。
  • 灵活扩展:支持AltiVec向量指令集(类似SIMD),加速多媒体处理。
代表厂商
  • IBM:Power系列处理器主导高端服务器市场。
  • 恩智浦(NXP):QorIQ T系列用于汽车网络与网关控制器。

Intel x86架构

x86是Intel主导的CISC(复杂指令集)架构,以高复杂度指令与向后兼容性著称,长期统治PC与服务器市场。

技术特点
  • 复杂指令集:单指令可完成内存操作、算术运算等多步任务。
  • 微指令转换:现代x86处理器将CISC指令拆解为类RISC微指令(μops),提升执行效率。
  • 多核与超线程:支持多核并行与超线程技术(如Intel Hyper-Threading)。

RISC-V架构

RISC-V是加州大学伯克利分校开发的第五代开源RISC架构,以模块化设计打破专利壁垒,允许自由定制与免授权费使用。

技术特点
  • 模块化指令集:基础指令集(RV32I/RV64I) + 可选扩展(如浮点、向量、加密)。
  • 精简高效:固定长度指令(32/64位)与单周期执行,适合低功耗场景。
  • 开放生态:全球社区协作推动工具链(GCC、LLVM)与OS(Linux、FreeRTOS)适配。
代表厂商

平头哥半导体:玄铁系列芯片赋能阿里云IoT与AI基础设施。

SiFive:提供RISC-V IP核定制服务,客户包括NASA与SK海力士。

ARM架构版本及特点 

内核版本

  • ARMv1: 最早的ARM架构版本,主要用于简单的32位设备。

  • ARMv2: 增加了乘法指令,改进了性能。

  • ARMv3: 支持32位内存地址空间,增加了长乘法指令。

  • ARMv4: 引入了Thumb指令集,优化了代码密度。

  • ARMv5: 增加了Jazelle DBX技术,支持Java字节码执行。

  • ARMv6: 支持SIMD指令,改进了多媒体处理能力。

  • ARMv7: 引入了TrustZone技术,增强了安全性。

  • ARMv8: 支持64位计算,提升了性能和内存寻址能力。

  • ARMv9: 最新版本,增强了安全性和AI处理能力。

ARMv7-A/R:

  • TrustZone 安全扩展:一种安全技术,提供了硬件级别的安全隔离,用于保护敏感数据和代码,支持安全支付和设备管理等应用。

  • VFPv3/v4 浮点运算:向量浮点处理器的第三版和第四版,提供了更高性能的浮点运算能力。

  • NEON SIMD 加速:NEON(New Embedded Operating Narrow)是ARM的SIMD扩展,用于加速多媒体和信号处理任务。

  • A32/T32 指令集:A32是ARM的32位指令集,T32是Thumb-2指令集的32位版本,两者都旨在提高代码密度和性能。

  • Scalar FP (SP/DP):标量浮点运算,支持单精度(SP)和双精度(DP)浮点数。

ARMv8-A:

  • AArch64 (64位支持):ARM的64位架构,提供了更大的地址空间和更高的性能。

  • A64 指令集:ARMv8-A的64位指令集,支持更复杂的计算任务。

  • Adv SIMD (SP+DP Float):高级SIMD扩展,支持单精度和双精度浮点运算,用于高性能计算。

  • 虚拟化扩展 (Hyp模式):提供了虚拟化支持,允许在单个物理处理器上运行多个操作系统实例。

  • CRYPTO 加密指令集:提供了硬件加密和解密指令,增强了数据安全性。

ARMv9:

  • SVE2 向量扩展:可扩展向量扩展(Scalable Vector Extensions)的第二版,提供了更高性能的向量处理能力,适用于高性能计算和机器学习。

  • 机密计算架构:增强了安全性,提供了保护数据和代码免受未授权访问的机制。

  • 增强AI加速:针对人工智能和机器学习工作负载进行了优化,提高了AI应用的性能。

Thumb技术

  • Thumb模式ARM处理器的一种16位指令模式,旨在提高编码密度,减少内存占用,特别是在内存带宽有限的嵌入式系统中。ARM指令集是32bit的指令集,在Thumb模式执行的指令集是16bit的Thumb指令集不是完整的指令集,它是ARM指令集的子集。但是Thumb 指令具有更高的代码密度,即占用存储空间小,仅为ARM代码规格的65%,但其性能却下降的很少。所 以,Thumb指令集使ARM处理器能应用到有限的存储带宽,并且,代码密度要求很高的嵌入式系统中去。

  • ARM7TDMI:首款支持Thumb技术的处理器。

  • ARM9及后续系列:包括XScale,都集成了Thumb技术。

Thumb-2技术

  • ARM1156核心:Thumb-2技术首次出现,扩展了Thumb指令集,增加了32位指令,提高了性能。

  • 目标:结合Thumb的编码密度和ARM指令集的性能。

Jazelle技术

Jazelle是ARM体系结构的一种相关技术,用于在处理器指令层次对JAVA加速。ARM的Jazelle技术使 Java加速得到比基于软件的Java虚拟机(JVM)高得多的性能,和同等的非Java加速核相比功耗降低80%。
  • ARM926EJ-S:首款支持Jazelle技术的处理器,以字母'J'标示。

NEON (Advanced SIMD)技术

SIMD,即 single instruction multiple data,单指令流多数据流,也就是说一次运算指令可以执行多个数据流,从而提高程序的运算速度,实质是通过 数据并行 来提高执行效率
  • 进阶SIMD扩展集:提供64和128位的SIMD指令集,加速多媒体和信号处理。

ARMv7之后,将SIMD升级为 NEON技术 相当于扩展了浮点运算向量表 有一个VFS的二维向量表,将数 据存放到这个表中,cpu可以一次性取某个区域进行执行,NEON就是SIMD的升级 相当于将上面SIMD执 行指令的表格长度与宽度进行扩展,提升了数据集的压缩算法。 NENO可以进行指令扩展来实现相关功 能,但我们一般不使用,如果做一些GPU相关的工作就需要利用NENO的浮点运算特性。 可用于加速多 媒体和信号处理算法(如视频编码/解码)、2D/3D图形、游戏、音频和语音处理、图像处理技术、电话 和声音合成,其性能至少为ARMv5的3倍,为ARMv6 SIMD性能的两倍 在SIMD的基础上提升了两倍效 率 所以运算速度的加快不是单纯的提升CPU的频率 通过这两个技术提升指令执行的方式,还有其他的 方法(比如增加二级缓存)

 VFP (Vector Floating-point Coprocessor for ARM)技术

ARM架构中用于增强浮点运算能力的协处理器。它提供单精度和双精度浮点运算能力,完全兼容ANSI/IEEE Std 754-1985二进制浮点算术标准。VFP技术主要应用于需要浮点运算的领域,如PDA、智能手机、语音压缩与解压、3D图像处理、数字音效、打印机、机顶盒和汽车应用等。

  • SIMD支持:有助于降低编码大小并提高效率。

  • VFPv2是针对ARMv5TE、ARMv5TEJ和ARMv6体系结构中ARM指令集的可选扩展。VFPv3则是对ARMv7-A和ARMv7-R配置文件中ARM、Thumb和ThumbEE指令集的可选扩展,实现了32个或16个双字长寄存器。VFPv4或VFPv4-D32在Cortex-A12和A15 ARMv7处理器上实现,并且Cortex-A7可选地在具有Neon的FPU情况下拥有VFPv4-D32。VFPv4增加了半精度支持作为存储格式以及融合乘加指令。

安全性扩展TrustZone

TrustZone是ARM针对消费电子设备设计的一种硬件架构,其目的是为消费电子产品构建一个安全框架来抵御各种可能的攻击。
TrustZone在概念上将SoC的硬件和软件资源划分为安全(Secure World)和非安全(Normal World)两个世界,所有需要保密的操作在安全世界执行(如指纹识别、密码处理、数据加解密、安全认证等)其余操作在非安全世界执行(如用户操作系统、各种应用程序等)。

ARM核工作模式 

Privilege level(权限级别) 

 安全状态(Secure State)
  • 特权级别划分

    • PL0:仅 User模式(运行非特权应用程序)。

    • PL1:除User模式外的 所有其他模式(如FIQ、IRQ、Supervisor等)

非安全状态(Non-secure State)
  • 特权级别划分

    • PL0User模式(非特权应用程序)。

    • PL1除User和Hyp外的所有模式(如FIQ、IRQ、Supervisor等)。

    • PL2Hyp模式(需支持虚拟化扩展,Hypervisor专用)。

 ARM 处理器核的工作模式(Processor Modes)是其架构的重要特性之一,用于支持不同的权限级别和异常处理机制。

FIQ(快速中断模式)

IRQ(普通中断模式)

Supervisor(管理模式)

Monitor(监视器模式)

Abort(中止模式)

Hyp(虚拟机管理模式)

With Security Extensions(需要安全扩展)

With Virtualization Extensions(需要虚拟化扩展) 

正常模式(Normal Modes)
  • 用途:处理常规任务或中断。

    • User模式(usr)

      • 特点

        • 运行应用程序的非特权代码,无法直接访问硬件资源。

        • 通过系统调用(SVC指令)切换到特权模式(如Supervisor模式)。

        • 支持安全(Secure)和非安全(Non-secure)状态。

    • System模式(sys)

    • 特点

      • 使用与User模式相同的寄存器组,但运行特权级代码(如操作系统内核任务)。

      • 适用于需要低权限但需访问特权资源的场景。

 异常模式(Exception Modes)
  • 用途:处理硬件异常、中断或安全扩展功能。

    • FIQ模式(fiq)

      • 特点

        • 处理高优先级中断(Fast Interrupt Request),响应速度最快。

        • 拥有专用寄存器(R8-R14),减少上下文保存开销。

        • 适用于实时性要求高的外设(如DMA控制器)。

    • IRQ模式(irq)

      • 特点

        • 处理普通中断(Interrupt Request),优先级低于FIQ。

        • 自动保存部分寄存器状态,便于快速恢复执行流。

    • Supervisor模式(svc)

      • 特点

        • 默认的复位启动模式,处理系统调用(SVC指令)。

        • 操作系统内核的核心运行环境,可访问所有系统资源。

    • Abort模式(abt)

      • 特点

        • 处理内存访问异常(如缺页、非法地址访问)。

        • 保存异常地址和状态寄存器(如FAR、IFSR/DFSR)。

  • Undefined模式(und)

    • 特点

      • 处理未定义指令异常(如执行未知操作码)。

      • 通常用于软件仿真或动态指令扩展。

  • Monitor模式(mon)

    • 特点

      • 管理安全与非安全状态的切换(通过SMC指令触发)。

      • 隔离敏感操作(如加密、密钥管理)与普通应用程序。

  • Hyp模式(hyp)

    • 特点

      • 虚拟机监控程序(Hypervisor)的专用模式。

      • 管理虚拟机的创建、调度和资源隔离。

(1)User mode
An operating system runs applications in User mode to restrict the use of system resources.
Software executing in User mode executes at PL0. Execution in User mode is sometimes described as unprivileged execution.
操作系统在用户模式下运行应用程序以限制系统资源的使用。在用户模式下执行的软件在PL0执行。在用户模式下执行有时被描述为非特权执行。
Application programs normally execute in User mode, and any program executed in User mode:
Makes only unprivileged accesses to system resources, meaning it cannot access protected system resources.
Makes only unprivileged access to memory.
Cannot change mode except by causing an exception,
应用程序通常在用户模式下执行,而在用户模式下执行的任何程序:
仅对系统资源进行非特权访问,这意味着它无法访问受保护的系统资源。
仅对内存进行非特权访问。
除非引起异常,否则无法更改模式,
用户模式是用户程序的工作模式,它运行在操作系统的用户态,它没有权限去操作其它硬件资源,只能执行处理自己的数据,也不能切换到其它模式下,要想访问硬件资源或切换到其它模式只能通过软中断或产生异常。
(2)System mode
Software executing in System mode executes at PL1. System mode has the same registers available as User mode, and is not entered by any exception.
在系统模式下执行的软件在PL1上执行。系统模式具有与用户模式相同的寄存器,并且不能通过任何异常进入系统模式是特权模式,不受用户模式的限制。用户模式和系统模式共用一套寄存器,操作系统模式下可以方便的访问用户模式的寄存器,而且操作系统的一些特权任务可以使用这个模式访问一些受控的资源。
(3)Supervisor mode
Supervisor mode is the default mode to which a Supervisor Call exception is taken. Executing a SVC (Supervisor Call) instruction generates a Supervisor Call exception, that is taken to Supervisor mode. A processor enters Supervisor mode on Reset.
Supervisor模式是采取Supervisor Call异常的默认模式。执行SVC(Supervisor Call)指令会生成 Supervisor Call异常,该异常被带到Supervisor模式。处理器在复位时进入Supervisor模式。
管理模式是CPU上电后默认模式,因此在该模式下主要用来做系统的初始化,软中断处理也在该模式下。当用户模式下的用户程序请求使用硬件资源时,通过软件中断进入该模式。
(4)Abort mode
Abort mode is the default mode to which a Data Abort exception or Prefetch Abort exception is taken.
中止模式是数据中止异常或预取中止异常的默认模式。
中止模式用于支持虚拟内存或存储器保护,当用户程序访问非法地址,没有权限读取的内存地址时,会进入该模式,linux下编程时经常出现的segment fault通常都是在该模式下抛出返回的。
(5)Undefined mode
Undefined mode is the default mode to which an instruction-related exception, including any attempt to execute an UNDEFINED instruction, is taken.
未定义模式是与指令相关的异常(包括任何执行未定义指令的尝试)采取的默认模式。
(6)FIQ mode
FIQ mode is the default mode to which an FIQ interrupt is taken.
FIQ模式是采用FIQ中断的默认模式。
快速中断模式是相对一般中断模式而言的,它是用来处理对时间要求比较紧急的中断请求,主要用于高速数据传输及通道处理中。
(7)IRQ mode
IRQ mode is the default mode to which an IRQ interrupt is taken.
IRQ模式是采用IRQ中断的默认模式。
一般中断模式也叫普通中断模式,用于处理一般的中断请求,通常在硬件产生中断信号之后自动进入该模式,该模式为特权模式,可以自由访问系统硬件资源。
(8)Hyp mode
Hyp mode is the Non-secure PL2 mode, implemented as part of the Virtualization Extensions. Hyp mode is entered on taking an exception from Non-secure state that must be taken to PL2
Hyp模式是作为虚拟化扩展的一部分实现的非安全PL2模式。Hyp模式在从非安全状态获取必须带到PL2的异常时进入
The Hypervisor Call exception and Hyp Trap exception are exceptions that are implemented as part of the Virtualization Extensions, and that are always taken in Hyp mode.
Hypervisor Call异常和Hyp Trap异常是作为虚拟化扩展的一部分实现的异常,并且始终在Hyp模式下执行。
In a Non-secure PL1 mode, executing a HVC (Hypervisor Call) instruction generates a Hypervisor Call exception.
在非安全PL1模式下,执行HVC(Hypervisor Call)指令会生成Hypervisor Call异常
(9)Monitor mode
Monitor mode is the mode to which a Secure Monitor Call exception is taken. In a PL1 mode, executing an SMC (Secure Monitor Call) instruction generates a Secure Monitor Call exception.
监视器模式是采用安全监视器调用异常的模式。在PL1模式下,执行SMC(安全监视器调用)指令会生成安全监视器调用异常。
Monitor mode is a Secure mode, meaning it is always in the Secure state, regardless of the value of the SCR(secure config register).NS bit. Software running in Monitor mode has access to both the Secure and Non-secure copies of system registers. This means Monitor mode provides the normal method of changing between the Secure and Non-secure security states.
监视器模式是一种安全模式,这意味着无论SCR.NS位的值如何,它都始终处于安全状态。在监视器模式下运行的软件可以访问系统寄存器的安全和非安全副本。这意味着监视器模式提供了在安全和非安全安全状态之间更改的正常方法。

ARM核寄存器介绍

通用寄存器

ARM处理器通常有16个32位的通用寄存器,编号从R0到R15

  • R0-R10:普通的通用寄存器,用于存放用户的数据。在函数调用和日常计算中使用。

  • R11 (fp: frame pointer):帧指针寄存器,用于记录当前函数调用的栈帧的起始地址。在访问局部变量和执行函数调用时非常有用。

  • R12 (ip: intra-procedure-call scratch register):在函数内部调用过程中用作临时寄存器,可以用来临时存储数据,如保存sp(栈指针)。

  • R13 (sp: stack pointer):栈指针寄存器,指向当前栈顶的位置。栈是用于存储函数调用信息、局部变量和临时数据的数据结构。

  • R14 (lr: link register):链接寄存器,在函数调用时用来保存返回地址。当一个函数被调用时,调用该函数的指令地址会被存储在lr中,以便在函数执行完毕后能够返回到正确的位置继续执行。

  • R15 (pc: program counter):程序计数器,指向CPU接下来要执行的指令的地址。每次指令执行完毕后,pc会自动更新为下一条指令的地址。

程序状态寄存器

  • CPSR(Current Program Status Register)  当前程序状态(模式、中断使能等)

CPSR是一个32位的寄存器,用于存储处理器的状态信息和控制信息

N、Z、C、V,最高4位称为条件码标志。ARM的大多数指令可以条件执行的,即通过检测这些条件码标志来决定程序指令如何执行。

各个条件码的含义如下:

N:在结果是有符号的二进制补码情况下,如果结果为负数,则N=1;如果结果为非负数,则N=0。

Z:如果结果为0,则Z=1;如果结果为非零,则Z=0。

C:其设置分一下几种情况:

               对于加法指令(包含比较指令CMN),如果产生进位,则C=1;否则C=0。

               对于减法指令(包括比较指令CMP),如果产生借位,则C=0;否则C=1。

               对于有移位操作的非法指令,C为移位操作中最后移出位的值。

               对于其他指令,C通常不变。

V:对于加减法指令,在操作数和结果是有符号的整数时,如果发生溢出,则V=1;如果无溢出发生,则V=0;对于其他指令,V通常不发生变化。

  • SPSR(Saved Program Status Register)   异常发生时保存的CPSR值

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于RK3588/RK3576+MCU STM32+AI的储能电站电池簇管理系统设计与实现

伴随近年来新型储能技术的高质量规模化发展,储能电站作为新能源领域的重要载体, 旨在配合逐步迈进智能电网时代,满足电力系统能源结构与分布的创新升级,给予相应规模 电池管理系统的设计与实现以新的挑战。同时,电子系…

【HarmonyOS之旅】基于ArkTS开发(二) -> UI开发三

目录 1 -> 绘制图形 1.1 -> 绘制基本几何图形 1.2 -> 绘制自定义几何图形 2 -> 添加动画效果 2.1 -> animateTo实现闪屏动画 2.2 -> 页面转场动画 3 -> 常见组件说明 1 -> 绘制图形 绘制能力主要是通过框架提供的绘制组件来支撑,支…

【算法】经典博弈论问题——威佐夫博弈 python

目录 威佐夫博弈(Wythoff Game)【模板】 威佐夫博弈(Wythoff Game) 有两堆石子,数量任意,可以不同,游戏开始由两个人轮流取石子 游戏规定,每次有两种不同的取法 1)在任意的一堆中取走任意多的石子 2)可以在两堆中同时取走相同数量…

通过Redisson构建延时队列并实现注解式消费

目录 一、序言二、延迟队列实现1、Redisson延时消息监听注解和消息体2、Redisson延时消息发布器3、Redisson延时消息监听处理器 三、测试用例四、结语 一、序言 两个月前接了一个4万的私活,做一个线上商城小程序,在交易过程中不可避免的一个问题就是用户…

第一个Qt开发实例(一个Push Button按钮和两个Label)【包括如何在QtCreator中创建新工程、代码详解、编译、环境变量配置、测试程序运行等】

目录 Qt开发环境QtCreator的安装、配置在QtCreator中创建新工程在Forms→mainwindow.ui中拖曳出我们要的图形按钮查看拖曳出按钮后的代码为pushButton这个图形添加回调函数编译工程关闭开发板上QT的GUI(选做)禁止LCD黑屏(选做)设置Qt运行的环境变量运行Qt程序如何让程序在系统启…

Spring Security(maven项目) 3.0.3.0版本

前言: 通过实践而发现真理,又通过实践而证实真理和发展真理。从感性认识而能动地发展到理性认识,又从理性认识而能动地指导革命实践,改造主观世界和客观世界。实践、认识、再实践、再认识,这种形式,循环往…

携程Java开发面试题及参考答案 (200道-上)

说说四层模型、七层模型。 七层模型(OSI 参考模型) 七层模型,即 OSI(Open System Interconnection)参考模型,是一种概念模型,用于描述网络通信的架构。它将计算机网络从下到上分为七层,各层的功能和作用如下: 物理层:物理层是计算机网络的最底层,主要负责传输比特流…

【Rust自学】16.4. 通过Send和Sync trait来扩展并发

喜欢的话别忘了点赞、收藏加关注哦,对接下来的教程有兴趣的可以关注专栏。谢谢喵!(・ω・) 16.4.1. Send和Sync trait Rust语言本身的并发特性较少,目前所提及的并发特性都来自于标准库,而不是语言本身。其…

MYSQL面试题总结(题目来源JavaGuide)

MYSQL基础架构 问题1:一条 SQL语句在MySQL中的执行过程 1. 解析阶段 (Parsing) 查询分析:当用户提交一个 SQL 语句时,MySQL 首先会对语句进行解析。这个过程会检查语法是否正确,确保 SQL 语句符合 MySQL 的语法规则。如果发现…

传输层协议——TCP协议

文章目录 🍍TCP协议谈谈可靠性TCP协议格式序号与确认序号窗口大小六个标志位 确认应答机制(ACK)超时重传机制连接管理机制三次握手四次挥手 流量控制滑动窗口拥塞控制延迟应答捎带应答面向字节流粘包问题TCP异常情况TCP小结基于TCP的应用层协…

pycharm(2)

conda 我下载安装conda的时候产生了各种问题,最终我发现,打开杀毒软件会有阻碍 cuda的版本问题很大,我尝试多个版本之后,发现anaconda3-2024.06.1-windows-x86_64安装了之后不会报错,另外pycharm的版本也一直有问题&a…

python算法和数据结构刷题[3]:哈希表、滑动窗口、双指针、回溯算法、贪心算法

回溯算法 「所有可能的结果」,而不是「结果的个数」,一般情况下,我们就知道需要暴力搜索所有的可行解了,可以用「回溯法」。 回溯算法关键在于:不合适就退回上一步。在回溯算法中,递归用于深入到所有可能的分支&…

【PyQt】pyqt小案例实现简易文本编辑器

pyqt小案例实现简易文本编辑器 分析 实现了一个简单的文本编辑器,使用PyQt5框架构建。以下是代码的主要功能和特点: 主窗口类 (MyWindow): 继承自 QWidget 类。使用 .ui 文件加载用户界面布局。设置窗口标题、状态栏消息等。创建菜单栏及其子菜单项&…

鼠标拖尾特效

文章目录 鼠标拖尾特效一、引言二、实现原理1、监听鼠标移动事件2、生成拖尾元素3、控制元素生命周期 三、代码实现四、使用示例五、总结 鼠标拖尾特效 一、引言 鼠标拖尾特效是一种非常酷炫的前端交互效果,能够为网页增添独特的视觉体验。它通常通过JavaScript和C…

Node.js与嵌入式开发:打破界限的创新结合

文章目录 一、Node.js的本质与核心优势1.1 什么是Node.js?1.2 嵌入式开发的范式转变 二、Node.js与嵌入式结合的四大技术路径2.1 硬件交互层2.2 物联网协议栈2.3 边缘计算架构2.4 轻量化运行时方案 三、实战案例:智能农业监测系统3.1 硬件配置3.2 软件架…

利用Vue和javascript分别编写一个“Hello World”的定时更新

目录 一、利用Vue编写一个“Hello World”的定时更新(1)vue编码在Html文件中(2)vue编码在js文件中 二、利用javascript编写一个“Hello World”的定时更新 一、利用Vue编写一个“Hello World”的定时更新 (1&#xff…

排序算法--插入排序

插入排序是一种简单且稳定的排序算法&#xff0c;适合小规模数据或部分有序数据。 // 插入排序函数 void insertionSort(int arr[], int n) {for (int i 1; i < n; i) { // 从第二个元素开始int key arr[i]; // 当前需要插入的元素int j i - 1;// 将比 key 大的元素向后移…

跟李沐学AI:视频生成类论文精读(Movie Gen、HunyuanVideo)

Movie Gen&#xff1a;A Cast of Media Foundation Models 简介 Movie Gen是Meta公司提出的一系列内容生成模型&#xff0c;包含了 3.2.1 预训练数据 Movie Gen采用大约 100M 的视频-文本对和 1B 的图片-文本对进行预训练。 图片-文本对的预训练流程与Meta提出的 Emu: Enh…

CH340G上传程序到ESP8266-01(S)模块

文章目录 概要ESP8266模块外形尺寸模块原理图模块引脚功能 CH340G模块外形及其引脚模块引脚功能USB TO TTL引脚 程序上传接线Arduino IDE 安装ESP8266开发板Arduino IDE 开发板上传失败上传成功 正常工作 概要 使用USB TO TTL&#xff08;CH340G&#xff09;将Arduino将程序上传…

游戏引擎 Unity - Unity 下载与安装

Unity Unity 首次发布于 2005 年&#xff0c;属于 Unity Technologies Unity 使用的开发技术有&#xff1a;C# Unity 的适用平台&#xff1a;PC、主机、移动设备、VR / AR、Web 等 Unity 的适用领域&#xff1a;开发中等画质中小型项目 Unity 适合初学者或需要快速上手的开…