Chinaunix首页 | 论坛 | 博客
  • 博客访问: 405270
  • 博文数量: 65
  • 博客积分: 1491
  • 博客等级: 上尉
  • 技术积分: 702
  • 用 户 组: 普通用户
  • 注册时间: 2009-05-30 15:57
文章分类
文章存档

2011年(6)

2010年(12)

2009年(47)

我的朋友

分类: 嵌入式

2010-03-22 20:35:02

1. Mips CPU 只能通过Load/Store两条指令访问内存
  RISC的指令一般比较整齐,单条指令的功能单一,执行时间比较快。只能对寄存器中的数据运算,存储器的寻址一般只能通过L/S(Load/Store)进行。一般为等长指令,更便于流水线。
  MIPS为RISC系统,等长指令,每条指令都有相同的长度:32位。其操作码固定为:6位。其余26位为若干个操作数。

2. 内存地址的对齐
  对于一个32位的系统来说,CPU 一次只能从内存读32位长度的数据。如果CPU要读取一个int类型的变量并且该变量的起始位不在所读32位数据的首位,那么CPU肯定无法一次性读完这个变量,这时就说这个变量的地址是不对齐的。相反,如果CPU可以一次性读完一个变量,则说该变量的地址是对齐的。

3. Mips CPU 要求内存地址(即Load/Store的操作地址)必须是对齐的
  其实不管是Mips,还是X86,都希望所操作地址是对齐的,因为这样可以最快速地处理数据。
  不过X86平台可以很容易很快速地处理不对齐的情况,而Mips一旦遇到地址不对齐的变量就会抛出exception,从而调用一大段后续处理代码,继而消耗大量的时间。
  因此,不管工作在什么平台下,程序员都应该养成使内存地址对齐的好习惯。

4. 一个例子

<--文章完-->
阅读(5948) | 评论(0) | 转发(1) |
0

上一篇:GPIO 和 SPI

下一篇:linux 压缩工具之比较

给主人留下些什么吧!~~