ARM存储模型(数据存储、指令存储)

本文介绍了ARM架构下的数据类型及存储方式,包括Byte、Halfword和Word等,并阐述了不同数据类型的对齐规则。此外,还详细解释了ARM指令集的分类及其存储对齐要求,包括ARM指令集和Thumb指令集的区别。
摘要由CSDN通过智能技术生成

          目录

1、ARM数据存储

(1) ARM数据类型

(2) ARM数据存储的方式

2、ARM的指令存储

(1) 指令集的分类

(2) 为什么ARM指令集的PC值与低2位无关?


1、ARM数据存储

(1) ARM数据类型

ARM采用32位架构,即ARM一次可以处理32bit的数据,基本的数据类型有以下三种:

  • Byte                        8 bits(1个字节)
  • Halfword                 16 bits(2个字节)
  • Word                       32 bits(4个字节)

前面说到,C语言是可以移植到arm处理器上的,但是C语言的数据类型和ARM的数据类型并不兼容,所以arm-gcc编译器在编译的时候,会将C语言的类型转换成ARM可以处理的数据类型,比如 char =》 Byte,short =》Halfword,int =》Word 。

注意:如果遇到了floate类型的数据,并非不能处理,可以采取拆分的方式进行运算,比如先处理整数部分,然后再处理小数部分;或者借助协处理器来运算。

 

(2) ARM数据存储的方式

数据本身是多少位,在内存存储时就应该多少位对齐

  • Byte:占1个字节,对齐必须是1的倍数,也就可以直接存储
  • Halfword:占2个字节,在内存中保存的起始地址必须是2的整数倍
  • Word:占4个字节,在内存中保存的起始地址必须是4的整数倍

这样存的目的是提升寻址时的效率,比如现在要从内存里取出一个Halfword类型的数据,每找一次,跳2个字节,找到的时候,直接取出2个字节带走。

但是Halfword不是按照2的整数倍存储,那么在取得时候,有可能会导致无法将数据一次取出。要全部取出的话,内存在寻址的时候,必须是一个字节一个字节的找,严重影响寻址效率。

 

2、ARM的指令存储

和上面数据存储一样,指令本身是多少位,在内存存储时就应该多少位对齐

(1) 指令集的分类

ARM处理器支持两种指令集:

  • ARM指令集
    • 所有指令(机器码)都占用 32 bit 的存储空间  =》内存中的起始地址必须是4的整数倍
    • 执行ARM指令集时,PC值每次Thu自增 4个字节
    • PC值由 2~31位决定,与 0~1 位无关。
  • Thumb指令集
    • 所有指令(机器码)都占用 16 bit 的存储空间 =》内存中的起始地址必须是2的整数倍
    • 执行Thumb指令集时,PC值每次自增 2个字节
    • PC值由 1~31位决定,与 第 0 位无关

(2) 为什么ARM指令集的PC值与低2位无关?

每当CPU执行完一条指令,PC的值就会自增来获取到下一条指令,自增的步长由指令集的类型决定。ARM指令存储的起始地址是4的整数倍,比如是0x0B,转换成二进制就是0000 1100,只要是4的倍数,最低2位一定是 0,因为低两位的取值是小于4的。

因此,PC的值,也就是指令存储的起始地址,与低2位无关。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值