星期五, 6月 17, 2005

有關MIPS

MIPS的全名是 Microprocessor without Interlocked Pipelined Stage。
期設計概念就是藉由刪除需要interlock的指令,讓整個instruction pipeline可以加快速度。
雖然後期卻又還是加上了一些會interlock的instruction,但是整體架構已經很optimize的,據說這是第一個RISC Processor,很都設計都為其他processor (無論是CISC或RISC)所採用。

MIPS的指令很少,分為三種Type:
  • R : 3 register,1 function field.
  • I : 2 register,16bit immediate value.
  • J : 6 bit opcode,26 bit immediate value.
詳細一點的指令
運算指令
  • add $1, $2, $3; $1 = $2 + $3 (signed)
  • addu $1, $2, $3; $1 = $2 + $3 (unsigned)
  • sub $1, $2, $3; $1 = $2 - $3 (signed)
  • subu $1, $2, $3; $1 = $2 - $3 (unsigned)
  • addi $1, $2, 13; $1 = $2 + 13 (immediate)
Load/Store
  • lw $1, 100( $2 ); 把位址 $2 + 100的word資料搬到$1
  • st $1, 100( $2 ); 把$1的word資料放到位址 $2 + 100的地方
條件/跳躍
  • beq $1, $2, 100; if $1==$2 goto PC + 4 + 100
  • slt $1, $2, $3 ; if ($2<$3) $1 = 1 ; else $1=0
  • j 10000 ; goto 10000
  • jal 10000 ; $31= PC + 4 and goto 10000
其他
  • lui $1, 100 ; load the immediate into the upper 16bit
MIPS有32個32 bits 的general purpos register,
R0的內容固定是0 (是constant) zero
R1是assembler的temp $at
R2, R3是subroutine的return value $v0, $v1
R4- R7 subroutine的參數 $a0- $a3
R8- R15 Temperory,呼叫function後摧毀, $t0 - $t7
R16 - R23 Saved,呼叫function後依然不變, $s0 - $s7
R24, R25 Temporary $t8, $t9
R26, R27 kernel (OS)用 $k0, $k1
R28 Global pointer $gp
R29 Stack Pointer $sp
R30 Frame Pointer $fp
R31 Return Address $ra (在某些instruction中使用)
R

沒有留言:

張貼留言