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值

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

https数字签名手动验签

以bing.com 为例 1. CA 层级的基本概念 CA 层级是一种树状结构,由多个层级的 CA 组成。每个 CA 负责为其下一层级的实体(如子 CA 或终端实体)颁发证书。层级结构的顶端是 根 CA(Root CA),它是整个 PKI 体…

如何获取当前的位置信息

文章目录 1 概念介绍2 使用方法3 示例代码3 体验分享 我们在上一章回中介绍了如何实现滑动菜单相关的内容,本章回中将介绍如何获取位置信息.闲话休提,让我们一起Talk Flutter吧。 1 概念介绍 我们在这里说的获取位置信息本质上是获取当前手机所在位置的…

c++在线音乐播放器项目开发记录(2)

前言 因为放寒假了,时间比较短,想找实习也不好找,干脆在家加强一下技术栈,首先从c学起,最适合练手的就是qt的项目了,我是根据B站视频【5个C/C硬核简历项目实战,可直接写入简历,包含…

PyQt6医疗多模态大语言模型(MLLM)实用系统框架构建初探(下.代码部分)

医疗 MLLM 框架编程实现 本医疗 MLLM 框架结合 Python 与 PyQt6 构建,旨在实现多模态医疗数据融合分析并提供可视化界面。下面从数据预处理、模型构建与训练、可视化界面开发、模型 - 界面通信与部署这几个关键部分详细介绍编程实现。 6.1 数据预处理 在医疗 MLLM 框架中,多…

【项目初始化】

项目初始化 使用脚手架创建项目Vite创建项目推荐拓展 使用脚手架创建项目 Vite Vite 是一个现代的前端构建工具,它提供了极速的更新和开发体验,支持多种前端框架,如 Vue、React 等创建项目 pnpm create vuelatest推荐拓展

云原生(五十二) | DataGrip软件使用

文章目录 DataGrip软件使用 一、DataGrip基本使用 二、软件界面介绍 三、附件文件夹到项目中 四、DataGrip设置 五、SQL执行快捷键 DataGrip软件使用 一、DataGrip基本使用 1. 软件界面介绍 2. 附加文件夹到项目中【重要】 3. DataGrip配置 快捷键使用:C…

爬虫基础(二)Web网页的基本原理

一、网页的组成 网页由三部分构成:HTML、JavaScript、CSS。 (1)HTML HTML 相当于网页的骨架,它通过使用标签来定义网页内容的结构。 举个例子: 它把图片标签为img、把视频标签为video,然后组合到一个界面…

【MySQL】MySQL客户端连接用 localhost和127.0.0.1的区别

# systemctl status mysqld # ss -tan | grep 3306 # mysql -V localhost与127.0.0.1的区别是什么? 相信有人会说是本地IP,曾有人说,用127.0.0.1比localhost好,可以减少一次解析。 看来这个入门问题还有人不清楚,其实…

【算法设计与分析】实验3:动态规划—最长公共子序列

目录 一、实验目的 二、实验环境 三、实验内容 四、核心代码 五、记录与处理 六、思考与总结 七、完整报告和成果文件提取链接 一、实验目的 掌握动态规划求解问题的思想;针对不同的问题,会利用动态规划进行设计求解以及时间复杂度分析&#xff0…

FIDL:Flutter与原生通讯的新姿势,不局限于基础数据类型

void initUser(User user); } 2、执行命令./gradlew assembleDebug,生成IUserServiceStub类和fidl.json文件 3、打开通道,向Flutter公开方法 FidlChannel.openChannel(getFlutterEngine().getDartExecutor(), new IUserServiceStub() { Override void…

JavaScript闭包深入剖析:性能剖析与优化技巧

一、引言 在 JavaScript 的奇妙世界里,闭包无疑是一个既强大又迷人的特性。它就像是一把万能钥匙,为开发者打开了实现各种高级功能的大门。从数据封装与保护,到函数的记忆化,再到模块化开发,闭包都发挥着举足轻重的作…

AnyThingLLM本地私有知识库搭建

***************************************************** 环境准备 操作系统:Windows11 内存:32GB RAM 存储:预留 300GB 可用空间 显存: 16G 网络: 100M带宽 前置准备: 已安装ollama环境 deepseek本地大模型 ***************************…

C语言指针专题四 -- 多级指针

目录 1. 多级指针的核心原理 1. 多级指针的定义 2. 内存结构示意图 3. 多级指针的用途 2. 编程实例 实例1:二级指针操作(修改一级指针的值) 实例2:动态二维数组(二级指针) 实例3:三级指…

【Wordpress网站制作】切换语言的问题

前言 自学笔记,解决问题为主,欢迎补充。 本文重点:如何将页面语言从默认的【英语】修改成【中文】。 问题描述 安装完wordpress,在【Setting】→【General】的语言中,选项只有英语。无法切换成中文 方法1: 在 wp-c…

使用openwrt搭建ipsec隧道

背景:最近同事遇到了个ipsec问题,做的ipsec特性,ftp下载ipv6性能只有100kb, 正面定位该问题也蛮久了,项目没有用openwrt, 不过用了开源组件strongswan, 加密算法这些也是内核自带的,想着开源的不太可能有问题&#xff…

对比DeepSeek、ChatGPT和Kimi的学术写作撰写引言能力

引言 引言部分引入研究主题,明确研究背景、问题陈述,并提出研究的目的和重要性,最后,概述研究方法和论文结构。 下面我们使用DeepSeek、ChatGPT4以及Kimi辅助引言撰写。 提示词: 你现在是一名[计算机理论专家]&#…

实测数据处理(Wk算法处理)——SAR成像算法系列(十二)

系列文章目录 《SAR学习笔记-SAR成像算法系列(一)》 《wk算法-SAR成像算法系列(五)》 文章目录 前言 一、算法流程 1.1、回波信号生成 2.2 Stolt插值 2.3 距离脉冲压缩 2.4 方位脉冲压缩 2.5 SAR成像 二、仿真实验 2.1、仿真参数…

基于遗传优化GRNN和Hog特征提取的交通标志识别算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 HOG 4.2 GRNN(General Regression Neural Network)模型原理 4.3 遗传算法(GA)优化GRNN平滑因子 5.算法完整程序工程 1.算法运行效果图预…

【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】1.18 逻辑运算引擎:数组条件判断的智能法则

1.18 逻辑运算引擎:数组条件判断的智能法则 1.18.1 目录 #mermaid-svg-QAFjJvNdJ5P4IVbV {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-QAFjJvNdJ5P4IVbV .error-icon{fill:#552222;}#mermaid-svg-QAF…

基于Python的药物相互作用预测模型AI构建与优化(上.文字部分)

一、引言 1.1 研究背景与意义 在临床用药过程中,药物相互作用(Drug - Drug Interaction, DDI)是一个不可忽视的重要问题。当患者同时服用两种或两种以上药物时,药物之间可能会发生相互作用,从而改变药物的疗效、增加不良反应的发生风险,甚至危及患者的生命安全。例如,…