02_ARM架构初探

ARM架构初探

什么是ARM

ARM架构,进阶精简指令集机器(Advanced RISC Machine)更早称作Acorn RISC Machine,是一个32位精简指令集(RISC)处理器架构

内核(架构)版本处理器版本
ARMv1ARM1
ARMv2ARM2、ARM3
ARMv3ARM6、ARM7
ARMv4StrongARM、ARM7TDMI、ARM9TDMI
ARMv5ARM7EJ、ARM9E、ARM10E、XScale
ARMv6ARM11、ARM Cortex-M
ARMv7ARM Cortex-A、ARM Cortex-M、ARM Cortex-R
ARMv8ARM Cortex-A30、ARM Cortex-A50、ARM Cortex-A70

ARM的使用场景

手机、电脑、智能家居 …

ARM大小端

  • 最高有效为 MSB(Most Significant Bit) 对应大端(Big-endian)
  • 最低有效为 LSB(Least Significant Bit) 对应小端(Little-endian)
  • armel : arm eabi little endian的缩写,软件浮点
  • armhf : arm hard float的缩写,硬件浮点
  • arm64 : 64位的arm默认就是hf的,因此不需要hf的后缀

ARM运行模式

运行模式功能
用户模式(USR)ARM处理器正常程序执行状态
快速中断模式(FIQ)高速数据传输或通道处理
外部中断模式(IRQ)通用的中断处理
管理模式(SVC)操作系统使用的保护模式
数据访问终止模式(ABT)当数据或指令预取终止时进入该模式,可用于虚拟存储及存储保护
系统模式(SYS)运行具有特权的操作系统任务
未定义指令终止模式(UND)未定义的指令执行是进入该模式

ARM寄存器

在这里插入图片描述

ARM指令集特点

  • 所有指令定长 : 4字节/32位
  • 大部分指令都可以在一个时钟周期内执行完毕
  • 每一个指令都可以有条件执行
  • 执行在通电后可以配置为低位优先或高位优先
  • LOAD/STORE模型,专有指令才能访问内存
  • ARM两种指令格式ARM&Thumb

ARM状态

  • 指令集状态
  • 执行状态
  • 安全状态
  • 调试状态

ARM三级流水线

  • CPU流水线、把一条指令分为多个处理阶段
  • ARM使用三级流水线、加速指令处理速断
  • ARM的三级流水分别是 : 取址(fetch)、译码(decode)、执行(execute)。PC执行fetch的指令

ARM V9之后使用了5级流水线

ARM指令集

  • 数据处理指令
    • 数据传送指令
      • mov
      • mvn
    • 算术逻辑运算指令
      • add
      • anc
    • 比较指令
      • cmp
      • tst
  • 跳转指令
    • b
    • BL
  • 程序状态寄存器(PSR)处理指令
    • msr
    • mrs
  • 存储器访问指令
    • ldr
    • str
  • 协处理器指令
    • cdp
    • LDC
  • 异常产生指令
    • SWI
    • BKPT

ARM环境介绍

操作系统 : Ubuntu x64 / Windows 7

ARM IDE : Keil uVersion

交叉编译 : arm-linux-gnueabi*

模拟环境 : qemu

sudo apt-get install gcc-arm-linux-gnueabi g++-arm-linux-gnueabi
sudo apt-get install gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf

编译并运行arm程序

keil
交叉编译ARM程序
编写代码
#include<stdio.h>
int main()
{
	printf("hello\n");
	return 0;
}
交叉编译工具进行编译
arm-linux-gnueabi-gcc hello.c -o hello
qemu执行
qemu-arm -L /usr/arm-linux-gnueabi/ ./hello

另一个方式

hello.s

.text
.global _start
_start:
	mov r0,#1
	ldr r1,=message
	ldr r2,=len
	mov r7,#4
	swi 0
	
	mov r7,#1
	swi 0
.data
message:
	.asciz "hello world\n"
len = .-message
arm-linux-gnueabi-as hello.s -o hello.so
arm-linux-gnueabi-ld hello.so -o hello
qemu-arm ./hello
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值