学习:MIPS体系设计

MIPS指令


MIPS体系结构设计准则

1.简单设计
2.加快常用功能
3.越小设计越快
4.好的设计需要好的折衷方法

1.简单设计

c语言等高级语言

a = b + c;
d = e - f;

对应MIPS语言为

add a,b,c
sub d,e,f
add,sub -> mnemonic
a       -> destination operand
b,c     -> source operand

2.加快常见功能

C语言等高级语言

a = b + c - d ;

对应MIPS语言

sub t,c,d         # t = c - d
add a,b,t         # a = b + t

3.越小设计越快

MIPS采用32位(64位)寄存器体系
访问寄存器的时间快于访问大的存储器

## C++
a = b + c;

##  MIPS汇编代码
add $s0,$s1,$s2  # a = b + c; $s0 = a, $s1 = b, $s2 = c

## C++
a = b + c - d;

## MIPS汇编代码
sub $t0,$s2,$s3
add $s0,$s1,$t0

保存寄存器 $s0~$s7
临时寄存器 $t0~$t9
总共18个存储数据的寄存器

## C++
a = b - c;

## MIPS汇编代码
sub $s0,$s1,$s2

## C++
f = (g + h) - (i + j);

## MIPS汇编代码
add $t0,$s1,$s2
add $t1,$s3,$s4
sub $s0,$t0,$t1

指令:

  1. 装入字指令 lw (load word)
  2. 存储字指令 sw (store word)
lw $s3,1($0)   #read memory word 1 into $s3
sw $s7,5($0)   #write $s7 to memory word 5
lw $s0,0($0)
lw $s1,8($0)
lw $s2,0xC($0) #read data word 3 to data word 1, C = 4'b1100
sw $s3,4($0)
sw $s4,0x20($0)#write $s4 to data word 8
sw $s5,400($0) #write $s5 to data word 100

32位数据包含4字节数据,所以每一个地址都是4的倍数
*每一个32位的数据包含4字节数据,在数据进行存储时
*地址0X00存入bit[31:24] 称之为大端机器
*地址0X00存入bit[7:0]称之为小端机器

# 立即数操作
addi $s0,$s0,4            # a = a + 4;
addi $s1,$s0,-12          # b = a - 12;
# number range at [-32768,32768]
# there is NO define about "subi", all Subtraction are equivalent 
# to adding a negetive number.
4.好的设计需要好的折衷

MIPS指令集支持三种指令格式
a. 三个寄存器操作
b. 两个寄存器操作数 一个立即数
c. 一个26位的立即数 没有寄存器操作数

a. add $s0,$s1,$s2 # a = b + c;
   sub $s0,$s1,$s2 # a = b - c;
b. lw $s0,0($0)
   sw $s0,4($0)
   addi $s1,$s0,4
c. # jump type
   op-addr
   # op   -> 6  bits
   # addr -> 26 bits

你可能感兴趣的:(学习:MIPS体系设计)