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. 一个例子
阅读(6011) | 评论(0) | 转发(1) |