Lecture03: Cortex m3存储系统访问 Refer to Chapter 5 in the reference book ARM Cortex-M3权威指南
Lecture 03: Cortex M3存储系统访问 Refer to Chapter 5 in the reference book “ARM Cortex-M3权威指南
内容 ● Cortex-M3存储器的分类 ●ARM的存储结构及存储方式 ●存储器操作数及变量 操作数的寻址方式 ● Cortex-M3存储器访问指令 ●栈操作
⚫ Cortex-M3存储器的分类 ⚫ ARM的存储结构及存储方式 ⚫ 存储器操作数及变量 ⚫ 操作数的寻址方式 ⚫ Cortex-M3存储器访问指令 ⚫ 栈操作 内容
Cortex-M3存储器的分类 日在系统中的地位 主存储器辅助存储器 口存储介质 磁存储器半导体集成电路存储器光存储器激光光盘存 储器 口信息存取方式 随机存取存储器(RAM)只读存储器(ROM)
在系统中的地位 • 主存储器 辅助存储器 存储介质 • 磁存储器 半导体集成电路存储器 光存储器 激光光盘存 储器 信息存取方式 • 随机存取存储器(RAM) 只读存储器(ROM) Cortex-M3存储器的分类
ARM存储结构及存储方式 ARM支持以下6种数据类型: 8位有符号和无符号字节Byte)l 16位有符号和无符号半字( Halfword) 它们必须以两字节的边界对齐(半字对齐) 32位有符号和无符号字 (word) 它们必须以4字节的边界对齐(字对齐) 字对齐:字单元地址的低两位A1A0=0b00。即地址末位 为0X0,0x4,0x8,0XC。 半字对齐:半字单元地址的最低位A0=0b0(地址末位为 0X0.0x2,0×40×6.0X80Xa,0Xc0xe)
ARM支持以下6种数据类型: 8位有符号和无符号字节(Byte)。 16位有符号和无符号半字(Halfword) 它们必须以两字节的边界对齐(半字对齐)。 32位有符号和无符号字(word) 它们必须以4字节的边界对齐(字对齐)。 字对齐:字单元地址的低两位 A1A0=0b00。即地址末位 为0x0, 0x4, 0x8, 0xc。 半字对齐:半字单元地址的最低位 A0=0b0 (地址末位为 0x0,0x2,0x4,0x6,0x8,0xa,0xc,0xe)。 ARM存储结构及存储方式
ARM存储结构及存储方式 个字由四个字节组成,如果要说明一个字存储的地址 ,则是指这个字存储的最低的地址单元的地址,即一个 字存储地址是A,则实际它占用的存储单元地址是A, A+1,A+2,A+3四个单元,一个半字(2个字节)占 用的地址是A,A+1两个单元,若是一个字节,占用的 地址是A的一个单元。 例如,地址0×1000000(8位十六进制数)中存放的是 个字节的数据,0x100000000×100001 0x10000002、0x10000003四个存储单元中存放的是 个字数据
• 一个字由四个字节组成,如果要说明一个字存储的地址 ,则是指这个字存储的最低的地址单元的地址,即一个 字存储地址是A,则实际它占用的存储单元地址是A, A+1,A+2,A+3四个单元,一个半字(2个字节)占 用的地址是A,A+1两个单元,若是一个字节,占用的 地址是A的一个单元。 • 例如,地址0x10000000(8位十六进制数)中存放的是 一个字节的数据,0x10000000、0x10000001、 0x10000002、0x10000003四个存储单元中存放的是 一个字数据。 ARM存储结构及存储方式
ARM存储结构及存储方式 低地址76543210 一个字节 01000 地址 kz1000000 个字 32位二进制数 8位十六进制0x1000 z10000 2000000 高地址
ARM存储结构及存储方式
字对齐 ARM的每个地址是对应于一个存储字节而不是一个 存储字,但ARM可以访问存储字,访问存储字时, 其地址应该是字对齐的。 ·字对齐,就是字的地址可以被4整除。也就是说,若 第1个字在存储空间中是在第0个地址对应的单元 32位),那么,第2个字则应在第4个地址对应的单 元,第3个字应在第8个地址对应的单元,依此类推 。一个字(32位二进制数)是由4个字节组成,假 如某个字其地址是A(A能被4整除),那么,该字 的4个字节对应的地址是A、A+1、A+2、A+3
• ARM的每个地址是对应于一个存储字节而不是一个 存储字,但ARM可以访问存储字,访问存储字时, 其地址应该是字对齐的。 • 字对齐,就是字的地址可以被4整除。也就是说,若 第1个字在存储空间中是在第0个地址对应的单元( 32位),那么,第2个字则应在第4个地址对应的单 元,第3个字应在第8个地址对应的单元,依此类推 。一个字(32位二进制数)是由4个字节组成,假 如某个字其地址是A(A能被4整除),那么,该字 的4个字节对应的地址是A、A+1、A+2、A+3。 字对齐
字对齐 3|2|1|020 7|65|464 98 A 048c d c e C 字节访问(字节对齐) 半字访问〔半字对齐〕 宇访问(字对齐 分析:假设存储器从地址0(0×0000000始存放字数据 个字数据占四个存储单元,即0(0X00000 10X0000001、2(0×00000002)、3(0X0000003四 个单元,那么第二个字数据放在地址4(0X0000004开 始的单元里,第三个数据则放在地址8开始的单元里,依 此类推
分析:假设存储器从地址0(0x00000000)开始存放字数据 ,一个字数据占四个存储单元,即0(0x00000000)、 1(0x00000001)、2(0x00000002)、3(0x00000003)四 个单元,那么第二个字数据放在地址4(0x00000004)开 始的单元里,第三个数据则放在地址8开始的单元里,依 此类推。 字对齐
字对齐 即使存储了其他类型(半字或者字节)的数据,没有 用到四个字节,那么下一个数据也必须按字对齐的原 则,存放在能被4整除的地址单元里。 例如:一个字(32位)数据存放在4(0×000004 5(0x0000005)、6(0X0000006、7(0×00000007 四个存储单元中,下面一个存储单元即 8(0X0000存放了一个字节(8位)的数据,如果接 着要存放一个字(32位)数据,则这个字数据不能存储在 9(xo000009开始的存储单元中,而是必须存放在 C(0x000o0o)、d(0xX000000D0)、e(0X00000005 f(0×0000000这四个地址单元中,这样才符合地址 对齐的规定
– 即使存储了其他类型(半字或者字节)的数据,没有 用到四个字节,那么下一个数据也必须按字对齐的原 则,存放在能被4整除的地址单元里。 – 例如:一个字(32位)数据存放在4(0x00000004)、 5(0x00000005)、6(0x00000006)、7(0x00000007) 四个存储单元中,下面一个存储单元即 8(0x00000008)存放了一个字节(8位)的数据,如果接 着要存放一个字(32位)数据,则这个字数据不能存储在 9(0x00000009)开始的存储单元中,而是必须存放在 c(0x0000000C)、d(0x0000000D)、e(0x0000000E) 、f(0x0000000F)这四个地址单元中,这样才符合地址 对齐的规定。 字对齐
ARM存储结构 对于指令,ARM指令系统分为32位ARM指令集和16 位的 Thumb指令集,在存储时分别以32位和16位的两 种不同长度存储。 对于数据,ARM支持对32位字数据,16位半字数据 ,8位字节数据操作。因此数据存储器可以存储32位, 16位,8位三种不同长度数据。 在ARM内部,所有操作都面向32位的操作数,只有 数据传送指令支持较短的字节和半字的数据类型。当从 存储器读入一个字节或半字时,根据其数据类型将其扩 展到32位
对于指令,ARM指令系统分为32位ARM指令集和16 位的Thumb指令集,在存储时分别以32位和16位的两 种不同长度存储。 对于数据,ARM支持对32位字数据,16位半字数据 ,8位字节数据操作。因此数据存储器可以存储32位, 16位,8位三种不同长度数据。 在ARM内部,所有操作都面向32位的操作数,只有 数据传送指令支持较短的字节和半字的数据类型。当从 存储器读入一个字节或半字时,根据其数据类型将其扩 展到32位。 ARM存储结构