IOT-路由器程序员

MIPS指令集与简要分析

2018-02-18  本文已影响0人  月见樽

R格式指令

基本格式

标记 op rs rt rd shamt funct
位数 31-26 25-21 20-16 15-11 10-6 5-0
功能 操作符 源操作数寄存器1 源操作数寄存器2 目的操作数寄存器 位移量 操作符附加段

指令

算数类指令

指令 op rs rt rd shamt funct 功能
add 000000 rs rt rd 00000 100000 rd=rs+rt
addu 000000 rs rt rd 00000 100001 rd=rs+rt(无符号数)
sub 000000 rs rt rd 00000 100010 rd=rs-rt
subu 000000 rs rt rd 00000 100011 rd=rs+rt(无符号数)
slt 000000 rs rt rd 00000 101010 rd=(rs<rt)?1:0
sltu 000000 rs rt rd 00000 101011 rd=(rs<rt)?1:0(无符号数)

逻辑类指令

指令 op rs rt rd shamt funct 功能
and 000000 rs rt rd 00000 100100 rd=rs&rt
or 000000 rs rt rd 00000 100101 rd=rs|rt
xor 000000 rs rt rd 00000 100110 rd=rs xor rd
nor 000000 rs rt rd 00000 100111 rd=!(rs|rt)

位移类指令

指令 op rs rt rd shamt funct 功能
sll 000000 00000 rt rd shamt 000000 rd=rt<<shamt
srl 000000 00000 rt rd shamt 000010 rd=rt>>shamt
sra 000000 00000 rt rd shamt 000011 rd=rt>>shamt(符号位保留)
sllv 000000 rs rt rd 00000 000100 rd=rt<<rs
srlv 000000 rs rt rd 00000 000110 rd=rt>>rs
srav 000000 rs rt rd 00000 000111 rd=rt>>rs(符号位保留)

跳转指令

指令 op rs rt rd shamt funct 功能
jr 000000 rs 00000 00000 00000 001000 PC=rs

I格式指令

基本格式

标记 op rs rd im
位数 31-26 25-21 20-16 15-0
功能 操作符 源操作数寄存器 目的操作数寄存器 立即数

指令

算数指令

指令 op rs rd im 功能
addi 001000 rs rd im rd=rs+im
addiu 001001 rs rd im rd=rs+im(无符号数)
slti 001010 rs rd im rd=(rs<im)?1:0
sltiu 001011 rs rd im rd=(rs<im)?1:0(无符号数)

逻辑类指令

指令 op rs rd im 功能
andi 001100 rs rd im rd=rs&im
ori 001101 rs rd im rd=rs|im
xori 001110 rs rd im rd=rs xor im

载入类指令

指令 op rs rd im 功能
lui 001111 00000 rd im rt=im*65536
lw 100011 rs rd im rt=memory[rs+im]
sw 101011 rs rd im memory[rs+im]=rt

跳转类指令

指令 op rs rd im 功能
beq 000100 rs rd im PC=(rs==rt)?PC+4+im<<2:PC
bne 000101 rs rd im PC=(rs!=rt)?PC+4+im<<2:PC

J格式指令

基本格式

标记 op address
位数 31-26 25-0
功能 操作符 地址

指令

指令 op address 功能
j 000010 addr PC={(PC+4)[31,28],addr,00}
jal 000011 addr $31=PC;PC={(PC+4)[31,28],addr,00}

指令分析

指令格式

MIPS_order.png

不同格式的指令具有不同的功能,其中:

数据通路

以上的指令包括以下几种与指令有关的数据通路:

同时还有几种必备的与指令无关的数据通路:

当使用哈弗结构时,数据通路框图如下所示:

MIPS_dataflow.png

流水线划分

若使用流水线实现,可以将流水线划分为:取指->译码->准备操作数->执行->回写四个阶段:

上一篇 下一篇

猜你喜欢

热点阅读