强奸久久久久久久|草草浮力在线影院|手机成人无码av|亚洲精品狼友视频|国产国模精品一区|久久成人中文字幕|超碰在线视屏免费|玖玖欧洲一区二区|欧美精品无码一区|日韩无遮一区二区

首頁 > 產(chǎn)品 > 知識 > mips指令集,關(guān)于MIPS指令集的函數(shù)返回

mips指令集,關(guān)于MIPS指令集的函數(shù)返回

來源:整理 時間:2023-08-19 17:39:38 編輯:智能門戶 手機版

本文目錄一覽

1,關(guān)于MIPS指令集的函數(shù)返回

你說得沒錯,一般編譯器都會編出你說的結(jié)果,有的編譯器與優(yōu)化等級有關(guān),試試-O2吧。位于delayslot中的指令只要不涉及到存儲器回寫,一般都沒什么問題

關(guān)于MIPS指令集的函數(shù)返回

2,MIPS有哪幾種指令格式

有I型指令,R型指令和J型指令
lb指令從存儲器中取一個數(shù)送到寄存器中喲。如果r2=124,那么這條指令就是把地址為124的那個位置的內(nèi)存的一個字節(jié)的值存到r1去,所以r1就是那個地址為124的內(nèi)存位置的值啊!注意只取一個字節(jié)。

MIPS有哪幾種指令格式

3,MIPS指令集不能運行windows為什么300字以內(nèi)解釋

windows只能運行在X86指令集上。它不支持MIPS指令集。因為微軟不愿意支持MIPS,這就是原因。
你好!微軟編譯的windows是X86架構(gòu),和MIPS完全是兩個架構(gòu),不能運行那是當(dāng)然的了.僅代表個人觀點,不喜勿噴,謝謝。

MIPS指令集不能運行windows為什么300字以內(nèi)解釋

4,什麼是MIPS

 MIPS(Million Instructions Per Second):單字長定點指令平均執(zhí)行速度  Million Instructions Per Second的縮寫,每秒處理的百萬級的機器語言指令數(shù)。這是衡量CPU速度的一個指標。像是一個Intel 80386 電腦可以每秒處理3百萬到5百萬機器語言指令,即我們可以說80386是3到5MIPS的CPU。MIPS只是衡量CPU性能的指標
音頻格式

5,CPU 的計算速度MIPS的全稱 是什么啊

mips是簡寫,在這里就有兩個全稱。 其一,million instruction per second,每秒百萬條指令,指的是cpu執(zhí)行指令的速度,一般51是12Mhz晶體1mips,ti的2407是40mips,2812是160mips,5509可達288mips,67xx可達4800mips,三星的arm7片s3c44b0最高約60mips,intel strongarm是arm9核,好像是400Mhz主頻,其mips=400*1.2=480。而pentium II的水平,大約相當(dāng)于40mips。 其二,是指mips公司的risc指令集cpu核。risc是相對于cisc的,risc的杰出代表有arm、powerpc(apple/ps2用)、mips等。cisc的cpu大家天天用,intel&amd的這種x86架構(gòu)就是。

6,基于MIPS指令集的Linux系統(tǒng)與基于X86指令集的Linux系統(tǒng)有什么區(qū)別

MIPS和x86是兩種不同的處理器架構(gòu),屬于硬件范疇;Linux 則是操作系統(tǒng)軟件,它支持包括 MIPS , x86, arm 等各種各樣的處理器架構(gòu)平臺。換句話說,它可以跑在依據(jù)不同處理器架構(gòu)規(guī)范實作出來的各種處理器上面。Linux 大部分的代碼都是由C語言寫成,因為C語言是一種高級別的語言,用它寫的程序可以被編譯成各種指令集中指令所構(gòu)成的二進制可執(zhí)行程序。C語言雖然高級別,但是有時候在沒辦法使用C語言的場合(比方為了訪問處理器內(nèi)不同寄存器就需要使用匯編而非C語言),或者有時候為了追求效率的提升,我們必須得用匯編來寫程序。Linux內(nèi)核為了支持不同的處理器架構(gòu),所以在其代碼中包括了少量的匯編代碼。所以我們可以認為,就內(nèi)核源代碼級別來說,基于不同指令集的Linux內(nèi)核是沒有太多區(qū)別的。這是內(nèi)核,對于不同應(yīng)用程序來說,我們也可以認為是沒什么區(qū)別,因為應(yīng)用程序基于C函數(shù)庫導(dǎo)出的不同函數(shù),以及Linux內(nèi)核所提供的系統(tǒng)調(diào)用,這些都是C語言接口,所以應(yīng)用程序都用高級語言寫成,基本上不會使用匯編語言。如果要真說有什么區(qū)別,那就體現(xiàn)在編譯后出來的二進制代碼上。我們認為那是完全不同的。因為完成同一個功能的二進制代碼,里面包含的是來自不同指令集內(nèi)的不同指令。就這么多了,您還需要多少詳細的解答?:)(該解答來自JulianTec - 您在 arm 架構(gòu)下學(xué)習(xí)嵌入式Linux的上佳指導(dǎo)。)
MIPS的演化   MIPS16是一個1997年面世的可選的指令集擴展,它能減少二進制程序尺寸的30-40%。實現(xiàn)者希望這種CPU能夠在很關(guān)心代碼尺寸的場合中更有吸引力--這種場合通常就是指低成本系統(tǒng)。由于只應(yīng)用于特定實現(xiàn),它是一個多廠商標準:LSI, NEC和Philips都生產(chǎn)支持MIPS16的CPU。   使MIPS二進制代碼比其他架構(gòu)的并不是MIPS指令集干的活少了, 而是他們的尺寸更大一些--每個指令4字節(jié)長,相比之下某些CISC架構(gòu)一般平均只有3個字節(jié)。   MIPS增加了一種模式,在這種模式下CPU可以對16位固定大小的指令進行解碼。大多數(shù)MIPS16指令擴展成正常的MIPS III指令,所以很明顯這將是一個相當(dāng)受限制的指令子集。竅門就在于使這個子集對足夠多的程序充分的進行高效編碼,以使整個程序的大小得到大大的壓縮。   當(dāng)然,16位指令并不會使其變成一個16位指令集。MIPS16 CPU是實際存在的帶有32位或者64位寄存器的的CPU,MIPS16 CPU的運算也都在這些寄存器上。   MIPS16遠不是一個完整的指令集—例如它既沒有CPU控制指令,也沒有浮點運算指令。但沒有關(guān)系,因為每一個MIPS16 CPU也必須要運行完整的MIPS ISA。你能運行MIPS16和正常的MIPS代碼的混合指令。每個函數(shù)調(diào)用或者跳轉(zhuǎn)-寄存器指令都能改變運行模式。   1.并不是MIPS發(fā)明了提供一種可選的使部分指令只有一半大小的創(chuàng)意。Advanced RISC Machine(ARM)公司的Thumb版本的arm CPU首先提出這個想法的。   在MIPS16中把指令地址編碼成最低有效位(Least Significant Bit, LSB)模式是既方便又高效的。MIPS16指令必須偶字節(jié)對齊,所以bit 0不再是指令指針(instruction pointer, 就是程序計數(shù)器PC)的組成部分了;取而代之的是,每條跳到奇數(shù)地址的指令開始執(zhí)行MIPS16,每條跳到偶數(shù)地址的指令回到正常的MIPS。MIPS子程序調(diào)用指令jal的目標地址總是字對齊的,所以新指令jalx隱藏了指令的模式間轉(zhuǎn)換。   為了把指令壓縮到一半大小,對于大多數(shù)指令我們只分配了3 bit來選擇寄存器,這樣只有8個通用寄存器允許自由訪問;在許多MIPS指令中可以見到的16 bit常數(shù)域也被壓縮,通常變成了5 bit。許多MIPS16指令只指明兩個寄存器,而不是三個。另外,還有一些特別的編碼規(guī)則將在下一節(jié)描述。   D.1.1 MIPS16中的特殊編碼格式和指令   被縮減的通用指令沒有什么問題,但有兩個特定的弱點會加大程序尺寸;5 bit的立即數(shù)域構(gòu)造常量是不夠的,在load/store操作中也沒有足夠的地址范圍。三種新的指令和一種特別規(guī)定有助于解決這些問題。  extend是一條特殊的MIPS16指令,它由5 bit的代碼和11 bit的域構(gòu)成。這個11 bit的域可以和后續(xù)指令中的立即數(shù)域相連接,這樣就允許使用一個指令對來對16 bit立即數(shù)編碼。這條指令在匯編語言中看起來就像一個指令前綴。   裝載(load)常量在正常的MIPS模式下都需要額外的指令,在MIPS16模式下更是巨大的負擔(dān);把常量放在內(nèi)存中然后再讀它們會更快一些。MIPS16對相對于指令自身位置的裝載操作(PC-relative loads, PC相關(guān)裝載)增加了支持,允許常量被嵌到代碼段中(典型情況就是在函數(shù)的起始處前面)。這些是僅有的不是嚴格對應(yīng)于正常的MIPS指令的MIPS16指令—MIPS沒有PC相關(guān)的數(shù)據(jù)操作。   許多MIPS load/store操作是直接在棧幀(stack frame)里,$29/mp可能是最普通的基寄存器。MIPS16定義了一組隱式使用mp的指令,允許我們把函數(shù)的棧幀引用地址也編進去而不需要一個分離的寄存器域。   MIPS的Load指令總是生成32位的全地址。由于裝載字(load word)指令只有當(dāng)?shù)刂肥?的倍數(shù)是才合法,最低兩位就被浪費了。MIPS16的Load指令是可以伸縮的:地址的偏移量會根據(jù)被load/store的對象的大小左移,這樣就增加了指令中可用的地址范圍。   作為一種額外的應(yīng)急機制,MIPS16定義了一些指令,允許在8個MIPS16可訪問的的寄存器中的一個與32個MIPS通用寄存器中的任何一個間任意做數(shù)據(jù)移動。   D.1.2 對MIPS16的評價   MIPS16對于匯編語言編程來說不是一種合適的語言,我們也不準備對它詳細說明。這些是編譯器的工作。大多數(shù)使用MIPS16模式編譯的程序的尺寸都會縮小到用MIPS模式編譯的 60-70%。MIPS16比32位CISC架構(gòu)的代碼更緊湊,和arm的Thumb代碼差不多,和純16位CPU相比相當(dāng)有競爭力。   但是沒有免費的午餐;MIPS16程序可能比MIPS增加40-50%的指令。這意味著在CPU核上運行一個程序會多用40-50%的時鐘周期。但是低端CPU經(jīng)常主要被存儲器所限制,而不是被CPU核所限制。較小的MIPS16程序需要較低的帶寬來取指令,這樣就得到更低的cache缺失率。在cache很小并且程序的存儲器有限時,MIPS16將會彌補差距,還有可能要重新改寫正常的MIPS代碼。   由于性能的降低,MIPS16代碼在有大的存儲器資源和很寬總線的計算機中沒有吸引力。這就是為什么它只是一種可選擴展的原因。   在應(yīng)用范圍的另一端, MIPS16將會與軟件壓縮技術(shù)展開競爭。在放進ROM存儲器之后,使用通常的文件壓縮算法壓縮的正常MIPS程序?qū)任磯嚎s的同等MIPS16代碼小,而稍大于壓縮過的MIPS16同等代碼(注1);如果你的系統(tǒng)擁有足夠的內(nèi)存能夠把ROM當(dāng)做文件系統(tǒng)使用,而把代碼解壓縮到RAM中執(zhí)行,那么全ISA軟件解壓很可能會帶來更好的總體性能。   也有這樣一種趨勢來構(gòu)造系統(tǒng),那就是大量使用以字節(jié)編碼的解釋語言(Java或者它的后續(xù)者)來書寫大量在時間上要求不嚴格的程序。那種中間代碼非常小,在尺寸方面比任何二進制機器碼都高效的多。如果只有解釋器和一些對性能要求嚴格的程序留在機器中ISA中,那么更密集的指令集編碼格式將只會影響程序的一小部分。當(dāng)然解釋器(特別是Java)本身會非常大,但是應(yīng)用復(fù)雜度的無情增長將很快使它減少重要性。   我預(yù)料在1998-2003年將會看到MIPS16小范圍的應(yīng)用于低能量、小尺寸和成本受限制的系統(tǒng)中。它還是值得發(fā)明的,因為有些系統(tǒng)—比如”智能”移動電話—可能會大量生產(chǎn)。   1.更密集的編碼格式在使用上比壓縮算法有更低的冗余度。   D.2 MIPSV/MDMX   MIPS V和MDMX是在1997年早些時候一起公布的。它們本來是為一種新的準備在1998年發(fā)布MIPS/SGI的CPU中的指令而設(shè)計的。但是那個CPU后來被取消了,關(guān)于它們的未來存在疑問。   二者都是為了克服一些已知的傳統(tǒng)指令集的不足,這些不足是在ISA面向多媒體應(yīng)用中產(chǎn)生的。象軟調(diào)制解調(diào)器的語音編/解碼、或流媒體應(yīng)用、或圖像/視頻的壓縮/解壓縮這樣的任務(wù)采用一些過去只有專用數(shù)字信號處理器(digital signal processor, DSP)才用的數(shù)學(xué)算法。在這種計算等級,多媒體任務(wù)通常都包括重復(fù)進行一些對大向量或者數(shù)組數(shù)據(jù)的相同操作。   在基于寄存器的機器內(nèi)部,通常采用的方案是把多媒體數(shù)據(jù)項封裝到一個機器寄存器中,然后執(zhí)行一條寄存器-寄存器指令,這條指令對于每個寄存器中的每個域做同樣的工作。這是一種非常明顯的并行處理形式,被稱為單指令,多數(shù)據(jù)(single instruction, multiple data. SIMD)。   這個想法首先見于一款I(lǐng)ntel的業(yè)已消失的i860架構(gòu)的微處理器(circa 88)中。作為對Intel x86指令集進行擴展的MMX在1996年投放市場后,SIMD重新登場時更加引人注目。   MDMX對操縱在一個64位寄存器中8x8-bit的整數(shù)組提供了一組操作,這些操作能夠?qū)λ械?小片做同樣的事情。這些指令包括通常的算術(shù)操作(加,減,乘),也有乘法-累加指令能把結(jié)果放在一個巨大的累加器中,這個累加器有足夠的精度防止溢出。   由于這些指令被用于特定數(shù)據(jù)類型被相當(dāng)清楚的從正常的程序變量分離開來的場合中,MDMX指令集與浮點寄存器一起工作就變得有意義。以這種方式重復(fù)利用現(xiàn)有的寄存器意味著現(xiàn)有的操作系統(tǒng)不需要改變(在任務(wù)切換時操作系統(tǒng)已經(jīng)保存和恢復(fù)浮點寄存器了)。   與MDMX相似,Intel的MMX為封裝進一個64bit的8個8bit數(shù)提供了”octibyte”八路(eight-way)指令。MIPS MDMX也定義了4x16位(四個短整數(shù)操作)和2x32位(兩個字操作)格式,但是早期的情況是一些MDMX實現(xiàn)可能認定octibyte格式和指令足夠了。   當(dāng)對8bit的數(shù)做算術(shù)運算時, 結(jié)果經(jīng)常下溢和上溢。如果我們必須為眾多的溢出測試條件編寫處理程序,那么多媒體應(yīng)用的性能將不會得到提高。而只簡單截去最大的和最小的數(shù)(對于無符號8-bit數(shù)來說,就是255和0)的上溢和下溢結(jié)果,對于機器運算來說會更加有幫助。這個處理過程叫做”飽和”(saturating)算法。MDMX擁有這種能力。   這就給我們帶來了MIPS V。盡管從名字上看好像意思是指一個升級的指令集--就像MIPS I到IV那樣,MIPS V在浮點領(lǐng)域跟MDMX很相似,提供了paired-single操作。paired-single對一對被封裝進64-bit的浮點寄存器中的單精度數(shù)做兩次FP動作。   MIPS V沒有MDMX那么古怪;MIPS IV包含了一個相當(dāng)廣泛的浮點運算集合,并且直接為其中的絕大部分提供了paired-single版本的指令;甚至成對比較(paired-compare)也可以做到,這是因為MIPS IV的CPU已經(jīng)有了多個浮點條件位來接收結(jié)果。但MIPS V沒有提供復(fù)雜多周期指令的成對操作版本的指令,這些多周期指令會需要非常多新的資源(例如沒有求平方根和除法)。   D.2.1 編譯器能用多媒體指令嗎?   引入SIMD多媒體指令的原因和70年代晚期以前在超級計算機中提供向量處理單元的原因相似。很容易為向量處理器構(gòu)造一個手工矩陣算術(shù)包。而用向量運算來編譯一個用高級語言寫成的程序就難得多了,盡管超級計算機提供商在這上面也取得一些成果。通常這些成果都集中在Fortran上;對于常規(guī)編程來說語義上的弱點使Fortran成為一種可憐的語言,但是這讓它變成了一種很容易優(yōu)化的語言
不知道你要多詳細,無論你什么平臺,MIPS,X86,ARM 都是同一份源碼,在編譯的時候選擇對應(yīng)的平臺而已,內(nèi)核源碼是一樣的。
文章TAG:mips指令集關(guān)于MIPS指令集的函數(shù)返回

最近更新