3.14号arm

2024-03-15 20:12
文章标签 arm 3.14

本文主要是介绍3.14号arm,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. 计算机基础理论

1.1 计算机的组成

输入设备:将数据转换成计算机可以识别,存储,处理的形式,发送到计算机中

输出设备:将计算机对程序和数据的运算结果输送到外部的设备

存储器:用于将数据保存的模块。

有寄存器,存在于CPU内部,用于暂时存放数据。CPU访问没有延时。

高速缓存

内存

外部存储

运算器:运算器由算术逻辑单元(ALU)、累加寄存器、数据缓冲寄存器和 状态条件寄存器组成,它是数据加工处理部件,完成计算机的各种算术和逻辑运算。

控制器:控制器由程序计数器、指令寄存器、指令译码器、时序产生器和操作控制器组成。 它是计算机指挥系统,完成计算机的指挥工作,也是计算机实现“程序存储控制”的基础

2.指令和指令集

机器指令:机器指令是处理器能够识别的计算机指令,当处理器获取到一个机器指令,就可以让机器实现某一个特定的运算

汇编指令:每一个汇编指令都是一条机器指令的标识,当一条汇编指令被执行时,也可以让机器实现某一个特定的运算

指令集:汇编指令的集合

3.编译的基本原理

编译过程:

预处理:展开以“#”开头的文件展开

编译:检查语法错误,没有错误会将程序编译为汇编文件 s

汇编:将汇编文件编译为二进制文件

链接:将文件中调用的函数的库信息链接到当前文件里,生产一个可执行的二进制文件

4.精简指令集和复杂指令集

基于精简指令集(RISC)设计cpu核心时,选取一些使用最为频繁比较简单的指令组成指令集,对于精简指令集来说具备以下特性:

1.精简指令集每一天指令的执行周期固定,基本都是单周期指令

2.精简指令集每一条指令的长度也是固定的

复杂指令集(CISC)追求核心功能的完善性,将实现所以计算的各个指令都放在一起组成指令集 复杂指令集有以下特征:

1.指令的执行周期不固定

2.指令的长度不固定

基于复杂指令集生产的芯片在功耗、体积、成本方面都要高于精简指令集芯, 但是复杂指令集芯片性能比精简指令集更强。

2. ARM的相关理论

2.1 ARM架构

不同的ARM精简指令集组成不同的ARM架构

2.2 ARM内核

基于不同的ARM架构设计出的不同的CPU核心就是ARM内核

2.3 SOC(system on chip)

将系统关键部件集成到一块芯片上

2.4 ARM的工作模式

2.5 ARM处理器的寄存器组织

2.6 ARM处理器中的一些特殊功能寄存器

R15寄存器又被称为(PC:program counter)程序计数器。

PC寄存器保存即将被从内存中取出来的指令的地址

当PC保存的指令地址被处理器发送给内存之后PC的值会自动向下加一条指令的大小, 这也是程序可以继续向下顺序执行的原因

R14又被称为(LR:link register)链接寄存器 LR寄存器的作用是当执行指令时进行程序跳转时,LR会保存跳转指令下一条指令的地址,方便程序返回

R13寄存器又被称为(SP:stack pointer)栈指针寄存器 SP寄存器保存栈内存栈顶的地址,对一些临时数据进行压栈出栈操作时需要使用SP的值来找到栈区位置

CPSR寄存器又叫(current program status register)当前程序状态寄存器

这个寄存器的作用是保存当前程序的工作状态

工作状态中包含程序的工作模式、中断禁止位以及程序的运算结果条件位等信息

SPSR寄存器又叫(saved program status register)被保存的程序状态寄存器

这个寄存器当处理器因为各种异常切换到异常模式工作时会将CPSR值提前保存到SPSR中,处理器处理完异常之后会将SPSR的值 赋值给CPSR,用于恢复处理器的工作状态

这篇关于3.14号arm的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/813135

相关文章

bash: arm-linux-gcc: No such file or directory

ubuntu出故障重装了系统,一直用着的gcc使用不了,提示bash: arm-linux-gcc: No such file or directorywhich找到的命令所在的目录 在google上翻了一阵发现此类问题的帖子不多,后来在Freescale的的LTIB环境配置文档中发现有这么一段:     # Packages required for 64-bit Ubuntu

编译linux内核出现 arm-eabi-gcc: error: : No such file or directory

external/e2fsprogs/lib/ext2fs/tdb.c:673:29: warning: comparison between : In function 'max2165_set_params': -。。。。。。。。。。。。。。。。。。 。。。。。。。。。。。。。 。。。。。。。。 host asm: libdvm <= dalvik/vm/mterp/out/Inte

Cortex-A7:ARM官方推荐的嵌套中断实现机制

0 参考资料 ARM Cortex-A(armV7)编程手册V4.0.pdf ARM体系结构与编程第2版 1 前言 Cortex-M系列内核MCU中断硬件原生支持嵌套中断,开发者不需要为了实现嵌套中断而进行额外的工作。但在Cortex-A7中,硬件原生是不支持嵌套中断的,这从Cortex-A7中断向量表中仅为外部中断设置了一个中断向量可以看出。本文介绍ARM官方推荐使用的嵌套中断实现机

ARM 虚拟化介绍

0.目录 文章目录 0.目录1.概述 1.1 Before you begin 2.虚拟化介绍 2.1 虚拟化为什么重要2.2 hypervisors的两种类型2.3 全虚拟化和半虚拟化2.4 虚拟机和虚拟CPUs 3.AArch64中的虚拟化4.stage 2 转换 4.1 什么是stage 2 转换4.2 VMIDs4.3 VMID vs ASID4.4 属性整合和覆盖4.5模拟

SylixOS ARM平台下内存对齐访问

1.内存对齐 1.1     内存对齐概要 现代计算机中内存空间都是按照byte划分的,从理论上讲对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定变量的时候经常在特定的内存地址访问,这就需要各类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。 1.2     内存对齐作用和原因 各个硬件平台对存储空间的处理上有很大的不同。一些平

ubuntu22.04 qemu 安装windows on arm虚拟机

ubuntu22.04 qemu 安装windows on arm虚拟机 iso: https://uupdump.net/ https://massgrave.dev/windows_arm_links vivo driver: https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/

arm linux lua移植

lua: lua home 1.下载lua源码 lua下载 lua-5.3.4.tar.gz 2.解压: tar xvf lua-5.3.4.tar.gz 3.修改makefile and luaconf.h $修改 lua-5.3.4/Makefile #INSTALL_TOP= /usr/local INSTALL_TOP= $(shell pwd)/out #修改安装目录(当前目录/o

正点原子阿尔法ARM开发板-IMX6ULL(二)——介绍情况以及汇编

文章目录 一、裸机开发(21个)二、嵌入式Linux驱动例程三、汇编3.1 处理器内部数据传输指令3.2 存储器访问指令3.3 压栈和出栈指令3.4 跳转指令3.5 算术运算指令3.6 逻辑运算指令 一、裸机开发(21个) 二、嵌入式Linux驱动例程 三、汇编 我们在进行嵌入式 Linux 开发的时候是绝对要掌握基本的 ARM 汇编,因为 Cortex-A 芯片一

ARM架构(五)——MMU①

1.MMU基础 1.1 为什么要用MMU,为什么要用虚拟地址? MMU的作用,主要是完成地址的翻译,即虚拟地址到物理地址的转换,无论是main-memory地址(DDR地址),还是IO地址(设备device地址),在开启了MMU的系统中,CPU发起的指令读取、数据读写都是虚拟地址,在ARM Core内部,会先经过MMU将该虚拟地址自动转换成物理地址,然后在将物理地址发送到AXI总线上,完成真正

ARM 伪指令 (26)

LDR 指令: ldr 既是一条伪指令 ,也是一条真正的arm 指令 举例: ldr  r1 , =val 将val的 地址 给到 r1 ldr  r1 , val 将 val 地址的内容给到 r1 . 作用: ldr pc, =32位地址。 这样就可以 实现长跳转。