第一章 mips cpu 體系結構概述
陳懷臨1。序言
本文介紹mips體系結構,著重於其暫存器約定,mmu及儲存管理,異常和中斷處理等等。
通過本文,希望能提供乙個基本的輪廓概念給對mips cpu及之上os有興趣的讀者。
並能開始閱讀更詳細的歸約(specification)資料。
mips是最早的,最成功的risc(reduced instruction set computer)處理 器之一,起源於stanford univ的電機系. 其創始人 john l. hennessy在2023年在矽谷創立
了mips inc. 公司(www.mips.com)。john l. hennessy目前是stanford univ. 的校長。在此之前,他是 stanford電子工程學院的dean。cs專業的學生都知道兩本著名的書:
「computer organization and design : the hardware/software inte***ce」 和
指令集詳細的資料請參閱mips歸約。
一般而言,mips指令系統有:mips i;mips ii;mips iii 和mips iv。可想而知,指令系統是向後相容的。例如,基於mips ii的**可以在mip iii和mips iv的處理器上跑一跑:-)
下面是當我們用gcc時,如何指定指令和cpu的選項。
下面是幾點補充:
*mips指令是32位長,即使在64位的cpu上。這對於區域性跳轉指令的理解很有幫助。
比如:j (target);jal (target)。j和jal的opercode是6位,剩下的26為存放跳轉偏移量。由於任何乙個指令都是32位(或4位元組)對齊(align)的,所以j 和jal最大的伸縮空間是2^28=256m。如果你的程式要作超過256m的跳轉,你就必須用jalr或jr,通過乙個gpr暫存器來存放你的跳轉位址。由於乙個暫存器是32或64位的,你就沒有任何限制了。
*mips cpu的sr(status register)中有幾位是很重要的設定,當我們選擇指令系統或要用64位的mips的cpu core在32模式下(絕大多數情況,弟兄們 別告訴我你在寫64位的程式:--) )。
sr[xx]:
1:mips iv instruction set usable
0:mips iv instruction set unusable
sr[kx]
sr[sx]
sr[ux]:
0:cpu工作在32位模式下
1:cpu工作在64位模式下
object檔案。你就會一目了然了。
*一定要記住:mips i,ii, iii和iv指令系統不包含priviledged instructions。
換句話說,都是那些在user mode下可以用的指令(當然kernel下也能用)。對於cpo的操作不屬於指令系統。
*有一點在mips cpu下,要千萬注意:align。mips對align的要求是嚴厲的。這一點與powerpc是天壤之別。指令必須是32位對齊。資料型別必須在她們的的
大小邊界對齊。簡單的比如:when cpu running under 32bit mode, int must 32bit aligned; long 32bit aligned; pointer must be 32bit aligned; char must 8 bit aligned. long long must 64 bit aligned;關於這一點 ,我是吃過苦頭的。當然我知道大家還會犯錯在這裡:--),即使知道了。有些事情學是沒用的:--)。一定要注意。
*我建議讀者閱讀specification時要花時間看一看指令系統的定義。其實不難。每一種指令不外乎幾個域(fields)。
MIPS體系結構 1
暫存器編號 助記符 用法 0 zero 永遠返回值為0 1 at 用做彙編器的暫時變數 2 3 v0,v1 子函式呼叫返回結果 4 7 a0 a3 子函式呼叫的引數 8 15 t0 t7 暫時變數,子函式使用時不需要儲存與恢復 24 25 t8 t9 16 23 s0 s7 子函式暫存器變數。子函式...
MIPS體系結構剖析,32個通用暫存器
mips彙編有個約定 後來也有些變化,我們不管,o32,n32 32個通用暫存器不是一視同仁 的,而是分成下列部分 暫存器號 符號名 用途 0 始終為0 看起來象浪費,其實很有用 1 at 保留給彙編器使用 2 3 v0,v1 函式返回值 4 7 a0 a3 前頭幾個函式引數 8 15 t0 t7 ...
ARM體系結構與程式設計
arm處理器的7中執行模式 usr fiq irq svc abt und sys。arm處理器共37個暫存器 31個通用暫存器 未備份暫存器r0 r7,在全部模式下指的都是同乙個物理暫存器 備份暫存器r8 r12,每乙個暫存器相應兩個不同的物理暫存器。對於r13 sp 和r14 lr 來說,每乙個...