色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > SPARC結(jié)構(gòu)與實時內(nèi)核的移植

          SPARC結(jié)構(gòu)與實時內(nèi)核的移植

          作者: 時間:2012-05-17 來源:網(wǎng)絡(luò) 收藏

          1.

          結(jié)構(gòu)繼承伯克利RISC結(jié)構(gòu),是其一個重要特性。又稱寄存器組,且該組寄存器只對當(dāng)前運(yùn)行程序可見。一個寄存器窗口包含32個無浮點寄存器,根據(jù)其使用習(xí)慣通常記為g0,...,g7;l0,...l7;i0,...,i7;o0,...,o7。其中 g0,...,g7為全局寄存器,其余24個為當(dāng)前窗口寄存器。如圖1。

          圖1:寄存器窗口

          指 N個寄存器窗口,其中,結(jié)構(gòu)規(guī)定N=2**n(1=n=5),即N=2、4、8、16或32,本文中N的值為8。在一個寄存器窗口組中,相鄰寄存器窗口存在寄存器公用。SAVE指令能夠分配一個全新的窗口CWP-1。其中8個inputs寄存器繼承窗口CWP的outputs寄存器的值。RESTORE指令則將CWP加1,使之前的窗口為當(dāng)前可用的窗口。

          特殊寄存器%PSR、%WIM

          處理器狀態(tài)(Processor State Register)寄存器。Bit0~Bit4為當(dāng)前窗口指針(CWP)。Bit5為Trap開關(guān)(ET)。Bit8~Bit11為優(yōu)先級(PIL)。其中CWP與寄存器窗口操作相關(guān),ET與Trap處理相關(guān),PIL與處理相關(guān)。

          無效窗口標(biāo)識(Windows Invalid Register)寄存器。Bit0~Bit7分別對應(yīng)窗口0~7,當(dāng)該位值為1時表示對應(yīng)窗口為無效窗口。注意,%WIM只能有一位為1,即在CPU的8個寄存器窗口中只能存在一個窗口為無效窗口。

          寄存器窗口的狀態(tài)與相關(guān)操作

          每個寄存器窗口都可以劃分到以下四個狀態(tài)之中:Current態(tài)、Invalid態(tài)、Used態(tài)和Unused態(tài)。假設(shè)CWP值為5,%WIM值為0x01,那么寄存器窗口組可以進(jìn)行如下劃分:

          W0:Invalid;W1~W4:Unused;W5:Current;W6~W7:Used。

          Overflow:當(dāng)前語句為SAVE指令,并且CWP-1對應(yīng)的窗口為無效窗口時,發(fā)生Overflow Trap。因為在程序調(diào)用時每出現(xiàn)一個新的子程序就對應(yīng)一個SAVE語句,當(dāng)子程序調(diào)用級數(shù)大于寄存器窗口數(shù)時,就會出現(xiàn)寄存器窗口用完的情況,從而需要進(jìn)行Overflow Trap的處理,通常是將Used態(tài)的寄存器窗口的寄存器值保存在RAM中。

          Underflow:當(dāng)前語句為RESTORE指令,并且CWP+1對應(yīng)的窗口為無效窗口時,發(fā)生Underflow Trap。通常RESTORE的內(nèi)容是之前Overflow Trap處理時保存到RAM中的,當(dāng)恢復(fù)到原來窗口時需要從RAM中讀出到寄存器。

          2.堆棧結(jié)構(gòu)

          堆棧幀

          根據(jù) V8手冊的附錄D,每個程序都對應(yīng)一個堆棧幀。每個幀包括四個基本組成部分。從%sp開始,第一部分大小為16個字,用來在Overflow Trap和Underflow Trap時保存當(dāng)前窗口的inputs寄存器和local寄存器。第二部分大小為1個字,用來傳遞隱藏參數(shù)。當(dāng)前子程序返回值不是一個變量,而是一個數(shù)據(jù)結(jié)構(gòu)時,該參數(shù)可以是指向該數(shù)據(jù)結(jié)構(gòu)的指針。第三部分大小為6個字,分別對應(yīng)六個入口參數(shù)。這三部分是編譯器為每個子程序的常規(guī)分配。其余的為第四部分,大小不確定,通常包含當(dāng)前子程序中包含的Auto型的變量、數(shù)據(jù)結(jié)構(gòu)等等。

          通常%sp為棧頂指針,%fp為棧幀指針,相當(dāng)于當(dāng)前棧的棧底。并且%sp就是%o6,%fp就是%i6,所以編譯器通常用語句(SAVE %sp,—0x148,%sp)來為新的線程分配一個新的棧幀。

          圖2:棧結(jié)構(gòu)


          上一頁 1 2 3 下一頁

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉