计算机组织与ARM Cortex - M3 v7M架构入门
1. 内存
计算机使用二进制位(0和1)来存储数据,为了方便管理,这些位通常被组织成8位的字节。每个字节都有一个唯一的地址,地址是一个二进制数,其位数决定了内存所能容纳的最大字节数。例如,20位地址最多能表示$2^{20}$个不同地址,约为100万个,对应的内存容量常称为1兆字节(MB)。如今的32位处理器有32位地址总线,可寻址4GB($2^{32}$字节)的内存。
相邻的字节可以组合成16位的半字、32位的字和64位的双字。通常,这些较大操作数的地址由其最低有效字节的地址指定。例如,32位地址为104的16位半字由地址为104和105的两个字节组成。
字节排序有两种方式:小端序(little endian)和大端序(big endian)。英特尔处理器常用小端序,即信息的最低有效字节存储在最低地址;摩托罗拉处理器和互联网传输的数据使用大端序,字节顺序相反。ARM处理器本质上是小端序架构,但也对访问大端序数据提供有限支持。
内存有两种基本操作:读和写。写入数据时,会覆盖该位置的原有内容;读取操作是非破坏性的,会获取内存位置内容的副本。物理上,内存使用32位数据总线,一次读写周期最多可传输4个字节。不过,有时实际使用的字节数少于4个,可能是因为操作数是字节或半字,或者操作数未对齐(跨越两个相邻的32位内存字),未对齐或双字操作数需要多个内存周期。
1.1 数据对齐
以32位(4字节)宽的数据总线的字节可寻址内存为例,每次内存读取会传输32位(4字节)信息。前16个字节(地址0 - 15)按每4字节一个32位字排列,每个字从模4地址开始。
超级会员免费看
订阅专栏 解锁全文
2117

被折叠的 条评论
为什么被折叠?



