下列指令序列用來對兩個(gè)數(shù)組進(jìn)行處理,并產(chǎn)生結(jié)果存放在$v0中。假定每個(gè)數(shù)組有2500個(gè)字,其數(shù)組下標(biāo)為0到2499。兩個(gè)數(shù)組的基地址分別存放在$a0和$a1中,數(shù)組長度分別存放在$a2和$a3中。要求為以下MIPS指令序列加注釋,并簡單說明該過程的功能。假定該指令序列運(yùn)行在一個(gè)時(shí)鐘頻率為2GHz的處理器上,add、addi和sll指令的CPI為1;lw和bne指令的CPI為2,則最壞情況下運(yùn)行所需時(shí)間是多少秒?
以下程序段是某個(gè)過程對應(yīng)的指令序列。入口參數(shù)inta和intb分別置于$a0和$a1中,返回參數(shù)是該過程的結(jié)果,置于$v0中。要求為以下MIPS指令序列加注釋,并簡單說明該過程的功能。
有些計(jì)算機(jī)提供了專門的指令,能從32位寄存器中抽取其中任意一個(gè)位串置于一個(gè)寄存器的低位有效位上,并高位補(bǔ)0,如下圖所示。MIPS指令系統(tǒng)中沒有這樣的指令,請寫出最短的一個(gè)MIPS指令序列來實(shí)現(xiàn)這個(gè)功能,要求i=5,j=22,操作前后的寄存器分別為$s0和$s2。
可以先左移9位,然后右移15位,即:
Sll $s2,$s0,9
Srl $s2,$s2,15