MIPS指令集 定址的方式

2021-10-10 08:55:00 字數 1251 閱讀 2945

一般來講,程式由資料指令構成,指令指導操作,資料提供操作物件,指令和資料在執行時都是存在記憶體中的,對它們的定址需要特定的方法。

定址方式分為指令定址資料定址。對指令位址的尋找稱為指令定址,對資料位址的尋找稱為資料尋找。

順序尋找:按指令儲存順序自動定址,如程式計數器pc定址。記憶體一般按位元組(byte)編址,一條指令32位,4個位元組,那麼下一條指令的首位址是上一條指令首位址加上4,程式計數器pc由此直接算出下一條指令的位址。

暫存器定址:指令位址在暫存器中,訪問暫存器獲得指令位址。mips暫存器也是32位的,可以直接儲存32位的指令位址,2^32位元組為4gb,相對mips處理器的應用領域來說已經夠了

pc相對定址:給出乙個立即數,和pc中位址相加得到指令位址。比如要找當前指令的向後偏移兩個指令長度的指令,只需要當前指令位址加上8(=2*4)即可得到。這種方式的特點是以pc中儲存的指令位址為基準,進行乙個常數的偏移

偽直接定址:參考mips指令中的跳轉指令,26位運算元左移2位,與pc高4位組成新的32位位址。對於跳轉指令,由於32位裡面,高位的6位已經被指令操作碼佔據,那麼關於運算元據只能放低位的26位,顯然不夠32位位址,只能讓這26位先左移兩位變28位,然後將pc中的高4位充當其高4位,以此擴充成32位指令位址

後三種稱為跳躍定址,與順序定址相對。

暫存器定址:資料存在暫存器當中,訪問暫存器即可拿到資料。mips暫存器的32位,就可以儲存指令位址,又可以儲存資料位址,而通用暫存器就32個,均按自然數從0到31排序,只需5個二進位制數即可表示所有暫存器,也就是在指令中只需要5位即可指出運算元

立即數定址:資料就就是當前指令的立即數,直接使用即可。有立即數的指令格式是i型指令,立即數占16位,相對普通的操作,16位立即數已經夠用了

基址定址:又叫偏移定址,通過立即數與基址暫存器的值相加得到資料的位址,然後通過資料傳輸指令進行資料操作。一般基址暫存器的位址指向記憶體的某個有固定功能的分割槽,程式的資料和指令以該位址為起始,進行訪問,這種做法可以方便排程記憶體分配。

當然還有更多的指令定址和資料尋找方式,不過mips處理器中常見的尋找方式即上述幾種。其他架構下的處理器還有各種各樣的尋找方式,以適應各種不同的應用場景。

MIPS彙編指令集

mips指令集屬於精簡指令集 mips的所有指令都是32位,指令格式簡單,而x86的指令長度不是固定的。簡單的指令和格式易於解碼和流水線操作,但是 密度不高,導致二進位制檔案大 mips有32個通用暫存器reg,為什麼是32個而不是更多呢?因為更多的暫存器需要更多的指令空間對暫存器編碼,也會增加上下...

MIPS指令集 指令的格式

mips的指令是32位的,相當於一條指令的含義與操作細節完全由32個二進位制數完全決定。對32位二進位制數的不同劃分使用,構成了不同的指令格式。mips指令集有三種指令格式 r型指令,i型指令,j型指令 mips處理器 mips cpu 中,具有儲存功能的部件是暫存器,即cpu與記憶體的資料交換本質...

ARM指令集之定址方式

arm7 處理器有兩個指令集 32位的 arm指令集,16位的 thumb 指令集。1 arm指令集 效率高,密度高 2 thumb 指令集 具有較高的 密度。注 1.所有的arm 指令集都是有條件執行的,而 thumb 指令集僅有一條指令具備條件執行功能。2.arm程式和 thumb 程式可相互呼...