MIPS彙編指令集

來源:互聯網
上載者:User

標籤:內容   fun   地址   word   轉移   否則   異常   左移   直接   

MIPS有三種指令格式:

R型

6 5 5 5 5 6
op rs rt rd shamt funct

 

 

功能:寄存器-寄存器ALU操作 (算術運算,邏輯運算)

I型

6 5 5 16
op rs rt 立即數操作

 

 

功能:條件分支,跳轉

J型

6 26
op 跳轉地址

 

 

功能:跳轉

MIPS常用指令集

lb / lh / lw :      從儲存空間中讀取一個byte/half word/word的資料到寄存器中.

sb/sh/sw:        把一個byte/half word/word的資料從寄存器儲存到儲存空間中

mov/movz/movn:               複製,n為負,z為零。mov $1,$2; movz $1,$2,$3($3為零則複製$2到$1)。
trap:                                    根據地址向量轉入管態。 
eret:                                    從異常中返回到使用者態。

算術類:
add/addu:       把兩個定點寄存器的內容相加;u為不帶符號加,如 rd = rs + rt

addi/addiu:     把一個寄存器的內容加上一個立即數;u為不帶符號加。 rd = rs + im
sub/subu:    把兩個定點寄存器的內容相減。 rd = rs - rt
div/divu:         兩個定點寄存器的內容相除。 
mul/mulu:       兩個定點寄存器的內容相乘。 

slt/slti/sltui:    如果rs的值小於rt,那麼設定rd的值為1,否則設定rd的值為0。 rd = (rs < rt) ? 1 : 0  ; rd = (rs < im) ? 1 : 0

邏輯類:
and/andi:        與運算,兩個寄存器中的內容相與 ;i為立即數。 rd = rs & rt ; rd = rs & im
or/ori:              或運算。  rd = rs | rt ; rd = rs | im
xor/xori:         異或運算。  rd = rs ^ rt ;rd = rs ^ im

nor/nori:         取反運算。 rd = !(rs | rt)

跳轉類:
j/jr/jal/jalr:                            j直接跳轉  PC = { (PC+4) [31,28] , addr, 00};jr使用寄存器跳轉 PC = rs; jal    $31 = PC;PC = {(PC+4) [31,28],addr,00}

beq/beqz/benz/bne:            條件轉移eq相等,z零,ne不等。  beq ,  PC = (rs == rt) ?  PC+4+im << 2  :   PC  ;  bne ,  PC = (rs != rt) ?  PC+4+im << 2  :   PC 

載入類:
lui:                                       把一個16位的立即數填入到寄存器的高16位,低16位補零。 rt = im * 65536(2^16)

lw:                                        rt = memory[ rs + im]

sw:                                       memory[ rs + im] = rt

位移類:
sll/srl:                                  邏輯左移/右移。  rd = rs << shamt  ; rd = rs >> shamt 

32個通用寄存器

MIPS下一共有32個通用寄存器 ;在彙編中,寄存器標誌由$符開頭。寄存器表示可以有兩種方式:直接使用該寄存器對應的編號,例如:從$0到$31;使用對應的寄存器名稱,例如:$t1, $sp。

0       ($zero)      : 永遠傳回值為0 
1       ($at)          : 用做彙編器的暫時變數 
2-3    ($v0-$v1)  : 子函數調用返回結果 
4-7    ($a0-$a3)  : 子函數調用的參數 
8-15  ($t0-$t7)    : 暫時變數,子函數使用時不需要儲存與恢複 
16-23($s0-$s7)  : 子函數寄存器變數。子函數必須儲存和恢複使用過的變數在函數返回之前,從而調用函數知道這些寄存器的值沒有變化。 
24-25($t8-$t9)    : 暫時變數,子函數使用時不需要儲存與恢複 
26-27($k0-$k1)  : 通常被中斷或例外處理常式使用作為儲存一些系統參數 
28     ($gp)        : 全域指標。一些運行系統維護這個指標來更方便的存取“static“和”extern”變數。 
29     ($sp)        : 堆棧指標 
30     ($s8/$fp)  : 第9個寄存器變數。子函數可以用來做楨指標 
31     ($ra)         : 子函數的返回地 
cp0                    :副處理器0,MIPS對CPU的控制用cp0完成

 

MIPS彙編指令集

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.