1. 程式人生 > >MIPS 指令集格式

MIPS 指令集格式

MIPS 指令集(共31條)

助記符

指令格式

示例

示例含義

操作及其解釋

Bit #

31..26

25..21

20..16

15..11

10..6

5..0

R-type

op

rs

rt

rd

shamt

func

add

000000

rs

rt

rd

00000

100000

 add $1,$2,$3

 $1=$2+$3

 rd <- rs + rt   ;其中rs=$2,rt=$3, rd=$1

addu

000000

rs

rt

rd

00000

100001

 addu $1,$2,$3

 $1=$2+$3

 rd <- rs + rt   ;其中rs=$2,rt=$3, rd=$1,無符號數

sub

000000

rs

rt

rd

00000

100010

 sub $1,$2,$3

 $1=$2-$3

 rd <- rs - rt   ;其中rs=$2,rt=$3, rd=$1

subu

000000

rs

rt

rd

00000

100011

 subu $1,$2,$3

 $1=$2-$3

 rd <- rs - rt   ;其中rs=$2,rt=$3, rd=$1,無符號數

and

000000

rs

rt

rd

00000

100100

 and $1,$2,$3

 $1=$2 & $3

 rd <- rs & rt   ;其中rs=$2,rt=$3, rd=$1

or

000000

rs

rt

rd

00000

100101

 or $1,$2,$3

 $1=$2 | $3

 rd <- rs | rt   ;其中rs=$2,rt=$3, rd=$1

xor

000000

rs

rt

rd

00000

100110

 xor $1,$2,$3

 $1=$2 ^ $3

 rd <- rs xor rt   ;其中rs=$2,rt=$3, rd=$1(異或)

nor

000000

rs

rt

rd

00000

100111

 nor $1,$2,$3

 $1=~($2 | $3)

 rd <- not(rs | rt)   ;其中rs=$2,rt=$3, rd=$1(或非)

slt

000000

rs

rt

rd

00000

101010

 slt $1,$2,$3

 if($2<$3) 
  $1=1 else
   $1=0

 if (rs < rt) rd=1 else rd=0 ;其中rs=$2,rt=$3, rd=$1

sltu

000000

rs

rt

rd

00000

101011

 sltu $1,$2,$3

 if($2<$3) 
  $1=1 else
   $1=0

 if (rs < rt) rd=1 else rd=0 ;其中rs=$2,rt=$3, rd=$1
  (無符號數)

sll

000000

00000

rt

rd

shamt

000000

 sll $1,$2,10

 $1=$2<<10

 rd <- rt << shamt  ;shamt存放移位的位數,
  也就是指令中的立即數,其中rt=$2, rd=$1

srl

000000

00000

rt

rd

shamt

000010

 srl $1,$2,10

 $1=$2>>10

 rd <- rt >> shamt ;(logical) ,其中rt=$2, rd=$1

sra

000000

00000

rt

rd

shamt

000011

 sra $1,$2,10

 $1=$2>>10

 rd <- rt >> shamt  ;(arithmetic) 注意符號位保留
 其中rt=$2, rd=$1

sllv

000000

rs

rt

rd

00000

000100

 sllv $1,$2,$3

 $1=$2<<$3

 rd <- rt << rs  ;其中rs=$3,rt=$2, rd=$1

srlv

000000

rs

rt

rd

00000

000110

 srlv $1,$2,$3

 $1=$2>>$3

 rd <- rt >> rs  ;(logical)其中rs=$3,rt=$2, rd=$1

srav

000000

rs

rt

rd

00000

000111

 srav $1,$2,$3

 $1=$2>>$3

 rd <- rt >> rs  ;(arithmetic) 注意符號位保留
 其中rs=$3,rt=$2, rd=$1

jr

000000

rs

00000

00000

00000

001000

 jr $31

 goto $31

 PC <- rs

I-type

op

rs

rt

immediate

addi

001000

rs

rt

immediate

 addi $1,$2,100

 $1=$2+100

 rt <- rs + (sign-extend)immediate ;其中rt=$1,rs=$2

addiu

001001

rs

rt

immediate

addiu $1,$2,100

 $1=$2+100

 rt <- rs + (zero-extend)immediate ;其中rt=$1,rs=$2

andi

001100

rs

rt

immediate

 andi $1,$2,10

 $1=$2 & 10

 rt <- rs & (zero-extend)immediate ;其中rt=$1,rs=$2

ori

001101

rs

rt

immediate

 andi $1,$2,10

 $1=$2 | 10

 rt <- rs | (zero-extend)immediate ;其中rt=$1,rs=$2

xori

001110

rs

rt

immediate

 andi $1,$2,10

 $1=$2 ^ 10

 rt <- rs xor (zero-extend)immediate ;其中rt=$1,rs=$2

lui

001111

00000

rt

immediate

 lui $1,100

 $1=100*65536

 rt <- immediate*65536 ;將16位立即數放到目標暫存器高16
         位,目標暫存器的低16位填0

lw

100011

rs

rt

immediate

 lw $1,10($2)

 $1=memory[$2
 +10]

 rt <- memory[rs + (sign-extend)immediate] ;rt=$1,rs=$2

sw

101011

rs

rt

immediate

 sw $1,10($2)

 memory[$2+10]
 =$1

 memory[rs + (sign-extend)immediate] <- rt ;rt=$1,rs=$2

beq

000100

rs

rt

immediate

 beq $1,$2,10

 if($1==$2)  
 goto PC+4+40

 if (rs == rt) PC <- PC+4 + (sign-extend)immediate<<2 

bne

000101

rs

rt

immediate

 bne $1,$2,10

 if($1!=$2) 
 goto PC+4+40

 if (rs != rt) PC <- PC+4 + (sign-extend)immediate<<2 

slti

001010

rs

rt

immediate

 slti $1,$2,10

 if($2<10) 
  $1=1 else
   $1=0

 if (rs <(sign-extend)immediate) rt=1 else rt=0 ;
   其中rs=$2,rt=$1

sltiu

001011

rs

rt

immediate

 sltiu $1,$2,10

 if($2<10) 
  $1=1 else
   $1=0

 if (rs <(zero-extend)immediate) rt=1 else rt=0 ;
  其中rs=$2,rt=$1

J-type

op

address

j

000010

address

 j 10000

 goto 10000

 PC <- (PC+4)[31..28],address,0,0   ;address=10000/4

jal

000011

address

 jal 10000

 $31<-PC+4;
 goto 10000

 $31<-PC+4;PC <- (PC+4)[31..28],address,0,0
   ;address=10000/4

注意:因為MIPS16只有16個16位的暫存器,所以JAL指令中$31改成$15, 所有立即數均無需擴充套件,LUI指令直接就是將立即數付給RT暫存器。

相關推薦

MIPS 指令格式

MIPS 指令集(共31條) 助記符 指令格式 示例 示例含義 操作及其解釋 Bit # 31..26 25..21 20..16 15..11 10..6 5..0 R-type op rs rt rd shamt fu

MIPS 指令將在近期開源,RISC-V 陣營慌嗎?

time 軟硬件 前途 用處 實力 _id times ins 協同 消息稱,MIPS 指令集即將開源。 eetimes 17 日報導,Wave Computing 公司表示,在明年第一季度發布最新 MIPS 指令集體系和 MIPS 最新內核 R6 的時候將開源 MI

Verilog實現單週期CPU(部分MIPS指令指令)

這學期比較忙,很久沒發部落格了,先附上原始碼,等過完期末再補全博文 原始碼連結:https://github.com/AlexZhang267/Single-Cycle-CPU 注:我是在編輯器中寫的,用Icarus Verilog編譯執行的,沒用vivad

MIPS指令相關

MIPS指令系統有:MIPS I;MIPS II;MIPS III 和MIPS IV。當然,指令系統是向後相容的。例如,基於MIPS II的程式碼可以在MIP III和MIPS IV的處理器上,可以完美執行。 關於MIPS指令集,有幾點需要特別專注: *MIPS指令是32位長

MIPS匯編指令

指令 通用 返回值 協處理器 內容 borde mips 跳轉 兩個 MIPS有三種指令格式: R型 6 5 5 5 5 6 op rs rt rd shamt funct 功能:寄存器-寄存器ALU操作 (算術運算,邏輯運算) I型 6 5

MIPS、ARM指令速記

MIPS指令集 A add B branch D divide J jump L load M multiply、move N noop O or S store、set、subtra

MIPS ISA---經典RISC指令

符號記錄 名稱 含義 GPR General Purpose Register 通用暫存器(32num-64bit) FPR Floating-point Pu

ARM cortex M3寄存器及指令

png cor 另一個 堆棧 應用程序 技術分享 font 限制 帶來 1、cortex M3擁有通用寄存器R0-R15及一些特殊寄存器: R0‐R7 也被稱為低組寄存器。所有指令都能訪問它們。它們的字長全是 32 位,復位後的初始值是不可預料的。 R8‐R12 也被稱為

ARM指令、Thumb指令、Thumb-2指令

32bit image 存儲 wid mage 頻率 arm 16bit 承載 MCU使用什麽指令集主要由內核決定的,比如Cortex-M3使用的是Thumb-2指令集 ARM指令集: 編代碼全部是 32bits 的,每條指令能承載更多的信息,因此使用最少的指令完

android ndk 編譯的時候指令的選取

文章 span tag androi ndk 有時 oca class word android ndk在編譯的時候默認生成的是thumb指令(拇指)不是arm(手臂)指令,但是有時候在看反匯編的時候,不太熟悉thumb指令或者說thumb指令看起來更費勁,需要生成arm指

《Java虛擬機原理圖解》4.JVM機器指令

popu 符號 處理 組織 snippet add ide 獲取 alt 0. 前言 Java虛擬機和真實的計算機一樣,執行的都是二進制的機器碼;而我們將.java 源碼編譯成.class 文件,class文件便是Java虛擬機可以認識的

ARM指令—SWP指令

而且 post margin {} 這樣的 有效 介紹 back swp ARM指令集—SWP指令 SWP和SWPB是ARM指令集中對存儲單元的原子操作。即對存儲單元的一次讀和一次不可被切割。SWP和SWPB分別完畢存儲器和寄存器之間 一個字(

iOS 指令

合並 ipo 判斷 arch xsd 微處理器 處理器 frame pad armv7|armv7s|arm64都是ARM處理器的指令集 i386|x86_64 是Mac處理器的指令集 arm64:iPhone6s | iphone6s plus|iPhone6

CentOS bug修復指令(阿裏雲適用)

pytho epo -h 輸出 控制臺 com kernel head mail 如 RHSA-2017:0817: kernel security, bug fix, and enhancement update (Moderate) 修復方案: yum updat

iOS 指令架構 armv6、armv7、armv7s、arm64、x86_64、i386

clas 通用 圖片 pil 而後 支持 iphone 8 地址 目標 一、ARM架構   ARM架構過去稱作進階精簡指令集機器(Advanced RISC Machine,更早稱作:Acorn RISC Machine),是一個32位精簡指令集(RISC)處理器架構,AR

Mac OS X10.10_xcode6.1_ios8.1環境下,編譯lame靜態庫libmp3lame.a,支持arm64 armv7s x86_64 i386 armv7指令

ces mod dir helper plain per 代碼 then -m 近期升級了系統到Mac OS X 10.10 而且更新了XCode6.1和iOS 8

指令基本原理

展現 模型 style 虛擬存儲器 縮小 索引 動態 包括 晶體管 指令集體系結構----程序員或編譯器編寫人員能夠看到的計算機部分。 指令集體系結構包括: 1.對各種指令集進行了分類,並對各種方法的優勢和劣勢進行某種量化評估。 2.對一些指令集測量數據進行分析。 3.語言

JVM指令介紹

fse inf clas -s val 轉載 signed sig icm 轉載自:http://glutinit.iteye.com/blog/1263446 延伸參考 JVM接收參數和方法調用 void spin() { int i; for

Thumb指令程序示例

flash 數據段 如果 tex start.s ash tile tro PC 在上節課中我們介紹CPU有兩種工作狀態,一種ARM狀態,一種Thumb狀態。 本節課主要介紹Thumb狀態及Thumb指令集。 在012_relocate的程序基礎上修改,創建013_thum

Linux指令

所有 bsp chgrp unzip ifconfig 文件屬性 當前目錄 man 目的 最近在學習Linux虛擬機,下面是我在學習虛擬機的過程中使用過的一些指令,及其作用。 pwd-> 列出當前目錄路徑 ls-> 列出當前目錄列表 cd-> 改變目錄 m