欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

用專用的指針存儲(chǔ)器進(jìn)行面向?qū)ο蟮奶幚淼闹谱鞣椒?

文檔序號(hào):6457293閱讀:197來(lái)源:國(guó)知局
專利名稱:用專用的指針存儲(chǔ)器進(jìn)行面向?qū)ο蟮奶幚淼闹谱鞣椒?br> 技術(shù)領(lǐng)域
本發(fā)明涉及本發(fā)明涉及面向?qū)ο蟮奶幚砗?,特別是涉及與對(duì)象有關(guān)的信息的處理。
2.有關(guān)技術(shù)的描述在面向?qū)ο蟮奶幚碇?,處理器處理與對(duì)象有關(guān)的信息。這種面向?qū)ο筇幚淼挠行﹥?yōu)點(diǎn)和用法在美國(guó)專利5708838中描述。
對(duì)象的每個(gè)使例都有一組定義與該對(duì)象有關(guān)的特性和該對(duì)象支持的方法的對(duì)象變量。例如,位于RAM的FIFO的那一組對(duì)象變量一般將包括定義FIFO的最大尺寸的代碼、它當(dāng)前占用的存儲(chǔ)器的單元數(shù)、它的輸入的當(dāng)前存儲(chǔ)單元和它的輸出的當(dāng)前存儲(chǔ)單元。由FIFO對(duì)象支持的方法一般將包括執(zhí)行典型的FIFO功能的操作諸如APPEND,REMOVE,FLUSH,INITIALILE。
采用面向?qū)ο筇幚淼囊粋€(gè)缺點(diǎn)是,它一般需要存儲(chǔ)和處理比面向結(jié)構(gòu)或面向數(shù)據(jù)流處理更多的指令。因此,面向?qū)ο蟮奶幚硪_(dá)到更大的通用性要提供更多的代碼空間并增加訪問(wèn)方法所需的時(shí)間以執(zhí)行操作。
一般,對(duì)象支持的方法按照算法處理對(duì)象變量和提供關(guān)于這些對(duì)象的非易失信息參數(shù)。對(duì)象可以包含其他對(duì)象的基準(zhǔn)點(diǎn),它們自身可以在方法的施行中作為參數(shù)傳遞并可能需要調(diào)用其他對(duì)象的方法。這會(huì)是面向?qū)ο筇幚淼姆浅YM(fèi)時(shí)的情況。
發(fā)明概述發(fā)明目的是要減輕采用面向?qū)ο筇幚淼纳鲜鋈秉c(diǎn)。
按照本發(fā)明,處理器以減少代碼空間和訪問(wèn)時(shí)間的方式處理當(dāng)前和以前的對(duì)象變量及為與當(dāng)前和以前對(duì)象相關(guān)的方法列出存儲(chǔ)單元的當(dāng)前和以前的方法表。為此目的,處理器·為多個(gè)對(duì)象的至少一個(gè)在存儲(chǔ)器中存儲(chǔ)至少一個(gè)對(duì)象變量;·為多個(gè)對(duì)象在存儲(chǔ)器存儲(chǔ)至少一個(gè)方法表;·提供第一個(gè)專用的存儲(chǔ)區(qū)以便存儲(chǔ)處在存儲(chǔ)器中當(dāng)前使用至少一個(gè)對(duì)象變量和至少一個(gè)方法表的指針;·提供第二個(gè)專用的存儲(chǔ)區(qū)以便存儲(chǔ)處在存儲(chǔ)器中以前使用至少一個(gè)對(duì)象變量和至少一個(gè)方法表的指針。
該處理器通過(guò)利用專用的包含它們各自的指針的存儲(chǔ)區(qū)自然地知道當(dāng)前的和以前的對(duì)象變量和方法表處在哪里。這樣就能使指向?qū)ο笞兞亢头椒ū淼拇a尺寸變得最小。通過(guò)為當(dāng)前和以前的對(duì)象變量及方法表兩者該處理器提供專用的存儲(chǔ)區(qū)能很快地從當(dāng)前的對(duì)象方法轉(zhuǎn)向以前的對(duì)象方法。
注意,“存儲(chǔ)器”一詞(如這里所用的)旨在一般地盡量解釋與它使用的方式一致且包括各種易失和非易失設(shè)備包括(但不限于)這類設(shè)備的RAMs、DRAMs、ROMs、寄存器和這些設(shè)備的組合?!皩S谩贝鎯?chǔ)區(qū)指有一個(gè)或多個(gè)該處理器已知的具體單元的存儲(chǔ)區(qū)。然而,這些單元不一定是固定的,而是在該處理器的控制下可以改變的。而且,“指針”一詞,如這里所用,指標(biāo)識(shí)存儲(chǔ)單元的任何值。除外,“讀”指從一個(gè)存儲(chǔ)器檢索信息并將它寫入到另一個(gè)存儲(chǔ)器。
附圖簡(jiǎn)述

圖1是一幅框圖說(shuō)明按本發(fā)明的一個(gè)實(shí)施方案建造的面向?qū)ο筇幚硐到y(tǒng)的各個(gè)部分。
圖2-5是簡(jiǎn)圖按發(fā)明的實(shí)施方案說(shuō)明圖1系統(tǒng)的操作。
圖6是一幅框圖說(shuō)明按照本發(fā)明的實(shí)施方案建造的存儲(chǔ)器的組成部分。
優(yōu)選實(shí)施方案的描述圖1的面向?qū)ο筇幚硐到y(tǒng)包含處理器10和存儲(chǔ)器20。示范性的處理器10是一個(gè)臺(tái)硬件加速單元,它用時(shí)鐘脈沖排定由程序計(jì)數(shù)寄存器標(biāo)識(shí)的指令。一般,程序計(jì)數(shù)寄存器含有處理器要讀和操作的下一條指令的存儲(chǔ)單元。
該處理器除包含別的東西外還包含環(huán)境寄存器集12、指令譯碼器14和算術(shù)邏輯單元16。存儲(chǔ)器20,在本舉例實(shí)施方案中,包含一個(gè)有多個(gè)存儲(chǔ)單元的RAM用以存儲(chǔ),除別的東西外,對(duì)象變量、方法表指針、方法表以及用作LIFO堆棧以便執(zhí)行這些方法。
處理器10和存儲(chǔ)器20連接到公共總線30以便互相通訊以及與連接到該總線的其他硬件通訊。該總線包含有關(guān)的線路以便攜帶信息諸如地址、中斷、數(shù)據(jù)、讀選通、寫選通和設(shè)備選擇選通。最好,這是一條高速總線,它至少部分地與處理器和存儲(chǔ)器在一個(gè)共同的硅基片上形成。
環(huán)境寄存器集12包含第一和第二組寄存器121和122,這兩組寄存器用于保存與該處理器的當(dāng)前和以前的操作有關(guān)的信息,一個(gè)或多個(gè)通用寄存器123和用于給堆棧編址的兩個(gè)寄存器124和125。更具體地說(shuō),環(huán)境寄存器集中的寄存器包含·一個(gè)對(duì)象變量指針寄存器OVP用以為當(dāng)前的對(duì)象保存標(biāo)識(shí)變量集在存儲(chǔ)器中的位置的指針;·一個(gè)以前對(duì)象變量指針寄存器POVP用以為以前的對(duì)象保存標(biāo)識(shí)變量集在存儲(chǔ)器中的位置的指針;·一個(gè)方法表指針寄存器MTP用以為當(dāng)前的對(duì)象保存標(biāo)識(shí)方法表存儲(chǔ)器中單元的指針;·一個(gè)以前的方法表指針寄存器PMTP用以為以前的對(duì)象保存標(biāo)識(shí)方法表在存儲(chǔ)器中的位置的指針;·一個(gè)不斷更新的程序計(jì)數(shù)器寄存器PC用以保存由處理器操作的下一條指令的存儲(chǔ)器地址;·一個(gè)以前的程序計(jì)數(shù)器寄存器PPC用以保存以前保存在程序計(jì)數(shù)器寄存器中未執(zhí)行的指令的存儲(chǔ)器地址;·通用寄存器123用以存儲(chǔ)從存儲(chǔ)器20讀出或由算術(shù)邏輯部件16產(chǎn)生的數(shù)據(jù);·寄存器124用以保存標(biāo)識(shí)被訪問(wèn)的當(dāng)前堆棧地址存儲(chǔ)器中位置的堆棧指針SP;·寄存器125用以保存標(biāo)識(shí)堆棧底部幀基址存儲(chǔ)器中位置的堆棧幀指針SFP。
指令譯碼器14是一個(gè)傳統(tǒng)的硬件部件諸如定序器或微定序器,將從存儲(chǔ)器20讀出的指令轉(zhuǎn)換成由算術(shù)邏輯部件16執(zhí)行的低級(jí)操作代碼。該算術(shù)邏輯部件也是一個(gè)傳統(tǒng)的硬件部件。
注意,為簡(jiǎn)單起見,圖1所示的存儲(chǔ)器20僅說(shuō)明了存儲(chǔ)器空間的一個(gè)塊,它的每一個(gè)都屬于·一個(gè)對(duì)象的具體實(shí)例的對(duì)象變量;·一個(gè)方法表指針,該指針為該對(duì)象的具體實(shí)例標(biāo)識(shí)方法表存儲(chǔ)器中的位置;和·由該方法表指針確定的方法表。實(shí)際上,一般有若干塊存儲(chǔ)器空間用于不同的對(duì)象變量,用于不同的方法表,用于它們各自的指針且還用于圖1未示出的其他信息(例如,給方法表確定的方法編碼)。存儲(chǔ)空間塊數(shù)主要取決于對(duì)象數(shù)和它們支持的方法數(shù)和是否有任何塊共用來(lái)存儲(chǔ)與多于一個(gè)對(duì)象有關(guān)的信息。例如,同一個(gè)方法表可以有時(shí)由同一總類的若干不同對(duì)象使用。然而,對(duì)對(duì)象的每個(gè)實(shí)例來(lái)說(shuō),各自的方法表指針存儲(chǔ)在預(yù)先確定的位置中,即在該處理器訪問(wèn)前有時(shí)確定的位置中。一種可替用的方法是,將指針作為該處理器將要訪問(wèn)的指令的組成部分來(lái)存儲(chǔ)。然而,在本發(fā)明的特別便利實(shí)施方案中,方法表指針存儲(chǔ)在與相關(guān)對(duì)象量的位置有預(yù)先確定關(guān)系的存儲(chǔ)位置里。在圖1所示的舉例實(shí)施方案中,每個(gè)方法表指針都存儲(chǔ)在有基址(起始)的存儲(chǔ)單元里,該基址等于OV-2,即存儲(chǔ)在比對(duì)象變量的OV基址的值小2的地址中。方法表的存儲(chǔ)器塊有MT的基址。
處理器10用特定的指令在環(huán)境的寄存器集中的第一和第二寄存器組121和122間傳輸與對(duì)象有關(guān)的信息并傳入和傳出該堆棧。這些指令在該舉例實(shí)施方案中叫作CALL、RETURN、ENTER〔M〕和LEAVE(N〕,這些指令一般描述如下·CALL指令使處理器開始執(zhí)行一種不同的方法。該指令有兩種不同的形式,即Local CALL和Non-Local CALL;·Local CALL使處理器開始執(zhí)行當(dāng)前使用中的方法表中編址的方法。該指令使處理器將寄存器PC、MTP、OVP的內(nèi)容分別讀入寄存器PPC、PMTP、POVP中并用當(dāng)前要執(zhí)行的新方法的第一條指令的地址更新寄存器PC。
·Non-Local CALL使處理器開始執(zhí)行當(dāng)前不使用的方法表中編址的方法且為了與當(dāng)前的方法表不同的對(duì)象。該指令執(zhí)行Local CALL執(zhí)行的一切,但進(jìn)一步使處理器分別用新的方法表指針和新的對(duì)象變量指針更新寄存器MTP和OVP。
·RETURN指令使處理器開始返回去執(zhí)行以前的方法。該指令使處理器將寄存器PPC、PMTP、POVP的內(nèi)容分別讀入寄存器PC、MTP、OVP。
·ENTER指令使處理器將寄存器124中的值減1,即堆棧指針SP中的值減1,變成將提供足夠的存儲(chǔ)空間存儲(chǔ)局部變量即,與當(dāng)前正在執(zhí)行的方法相關(guān)的變量的地址。所需的空間由M值表示,它形成ENTER指令的組成部分。然后,處理器將寄存器PPC、PMTP、POVP和125(當(dāng)前堆棧幀指針SFP)的內(nèi)容推入堆棧、將堆棧指針SP值減至提供由M值表示的空間和由新推入的信息占用的空間的值,并將來(lái)自寄存器124的值作為堆棧幀指針SFP的新值讀入寄存器125。
·LEAVE指令使處理器將底部幀的內(nèi)容彈出堆棧。特別是,底部幀包含寄存器PPC、PMTP、POVP和SFP’的值最后推入的內(nèi)容,處理器將它們分別讀入寄存器PC、MTP、OVP和125。在完成該指令時(shí),處理器將堆棧指針SP加1至堆棧的新基址。這由包含在指令中的N值提供方便,它表示在底部幀中已由未被存儲(chǔ)的信息(例如,參數(shù)和變量)占據(jù)的任何存儲(chǔ)空間。
圖2說(shuō)明處理器在連續(xù)時(shí)期之間操作的示范性順序。該圖由三列組成,第一列表示由處理器臨時(shí)執(zhí)行的操作,第二列表示第一和第二組寄存器121和122的臨時(shí)內(nèi)容和第三列表示堆棧的臨時(shí)內(nèi)容。注意括號(hào)表征寄存器或其他存儲(chǔ)單元的內(nèi)容。例如,〔PC〕表示程序計(jì)數(shù)器寄存器PC的內(nèi)容。
該順序始于時(shí)間t0這時(shí)處理器處在執(zhí)行方法A4的過(guò)程,它是對(duì)象A的方法表編址的第四種方法。在該時(shí)間·寄存器OVP裝有基址OV(A),該基址OV(A)標(biāo)識(shí)含有對(duì)象A的對(duì)象變量的存儲(chǔ)器20中單元。
·寄存器MTP裝有標(biāo)識(shí)含有對(duì)象A的方法表(方法表A)的存儲(chǔ)器20中的單元基址MT(A)。
·寄存器PC裝有MT地址(A4,t0),該地址標(biāo)識(shí)含有處理器在執(zhí)行A4方法中要執(zhí)行的下一條指令的存儲(chǔ)器20中的單元。
·寄存器POVP含有基址〔POVP〕,該基址〔POVP〕標(biāo)識(shí)含有以前對(duì)象的對(duì)象變量(假定處理器以前處理過(guò)與對(duì)象有關(guān)的信息)的存儲(chǔ)器20中的單元。
·寄存器PMTP裝有標(biāo)識(shí)存儲(chǔ)器20中的單元的基址〔PMTP〕,存儲(chǔ)器20包含以前對(duì)象的方法表。
·寄存器PPC含有地址〔PPC〕,該地址〔PPC〕標(biāo)識(shí)包含在存儲(chǔ)器20中的單元,存儲(chǔ)器20含有處理器為以前的方法執(zhí)行的下一條指令。
·堆棧的基本幀由堆棧的幀指針SFP標(biāo)識(shí)并包含若干相鄰的存儲(chǔ)器地址,該堆棧的基本幀包含·〔PPC〕、〔PMTP〕、〔POVP〕和標(biāo)識(shí)以前推入堆棧幀的地址的堆棧幀指針SFP′;·任何局部變量LV(A4),這些變量是在執(zhí)行A4方法期間產(chǎn)生的,例如,在進(jìn)行計(jì)算時(shí)產(chǎn)生的循環(huán)數(shù);和·任何以前推入的參數(shù)PPP,該參數(shù)是在執(zhí)行以前的方法期間產(chǎn)生的,例如,要修改的對(duì)象的指針或要由后面執(zhí)行的方法使用的變量。
在t1時(shí),處理器將方法A4期間產(chǎn)生的參數(shù)PP(A4)推入由第一次將寄存器124中的堆棧指針SP減1至標(biāo)識(shí)堆棧新的底部地址的新值的堆棧和然后將這些參數(shù)存儲(chǔ)在地址里。它還開始在該地址執(zhí)行仍然包含在程序計(jì)數(shù)器寄存器PC中的指令,即,地址MT(A4,t0)并將寄存器PC減1以標(biāo)識(shí)要執(zhí)行的下一條指令的地址,即,地址MT(A4,t1)。
在t2時(shí),處理器在執(zhí)行方法A4過(guò)程期間碰到了Local CALL指令CALL A2。包含在該指令中的是為方法A2將一個(gè)指數(shù)列入方法表A中的參數(shù)MTI(A2)。在執(zhí)行該指令中,處理器·將第一組寄存器121的內(nèi)容拷貝到第二組寄存器122中;·用參數(shù)MTI(A2)載明的指數(shù)計(jì)算(在算術(shù)邏輯部件16中)含有方法A2的起始地址的方法表中的地址并將該地址裝入程序計(jì)數(shù)器寄存器PC以便開始執(zhí)行A2方法。
在t3時(shí),處理器在執(zhí)行方法A2過(guò)程期間碰到了指令ENTER M。處理器在執(zhí)行該指令中·將堆棧指針SP減至一個(gè)新值以便在堆棧中提供由變量M的值表示的附加空間量,該變量在執(zhí)行方法A2期間產(chǎn)生;·將下列推入該附加空間·寄存器組122的內(nèi)容,即MT(A4,t2)、MT(A)、OV(A);·標(biāo)識(shí)方法A4的以前堆棧幀單元的堆棧幀指針SFP″;·將來(lái)自寄存器124的值作為堆棧幀指針SFP的新值讀入寄存器125。
在t4時(shí),處理器完成了A2方法后遇到了指令LEAVE N。處理器在執(zhí)行該指令時(shí)·將底部幀的內(nèi)容彈出堆棧,將MT(A4,T2)、MT(A)、OV(A)和SFP″分別傳入寄存器PC、MTP、OVP和125;·將堆棧指針SP(在寄存器124中)乘以N值增至堆棧新底部地址。處理器通過(guò)開始在地址MT(A4,t2)執(zhí)行指令重新啟動(dòng)方法A4,它又在程序計(jì)數(shù)器寄存器PC中。
圖3類似于圖2,但說(shuō)明了事件的舉例順序,這些事件在處理Non-Local CALL期間發(fā)生。在這種情況下,t0和t1時(shí)同的事件與圖2的事件一致。然而,t2時(shí),處理器遇到的不是方法A2(在方法表A中)的Local CALL而是方法C7(在方法C中)的Non-Local CALL。一般,向不類似的對(duì)象種類相關(guān)的不同類型方法提供不同的方法表。例如,方法表A可用于與FIFO操作相關(guān)的方法而方法表C可用于與直接訪問(wèn)存儲(chǔ)器(DMA)操作相關(guān)的方法。
參考圖3,在t2時(shí),處理器在執(zhí)行方法A4過(guò)程期間碰到Non-LocalCALL指令CALL C7。包含在該指令中的是一個(gè)與包含對(duì)象C的對(duì)象變量的基本存儲(chǔ)地址和將指數(shù)列入方法C7的方法表C參數(shù)MTI(C7)的鏈路。對(duì)存入含有OV(C)的C的對(duì)象變量或指數(shù)的基址來(lái)說(shuō),該鏈路可以是實(shí)際的指針OV(C)。在本舉例中指令包含指針OV(C)自身。在執(zhí)行該Non-Local CALL指令中,處理器·將第一組寄存器121的內(nèi)容拷入第二寄存器122;·將指針OV(C)讀入寄存器OVP;·讀從存儲(chǔ)地址OV(C)-2來(lái)的方法表指針MT(C)并讀入寄存器MTP;·用參數(shù)MTI(C7)載明的指數(shù)計(jì)算(在算術(shù)邏輯部件16中)包含方法C7的起始地址的方法表中地址并將該地址裝入程序計(jì)數(shù)器寄存器PC以開始執(zhí)行方法C7。
而順序和圖2描述的順序相同。具體講,在t3時(shí),在執(zhí)行方法C7過(guò)程期間處理器遇到了指令ENTERM。在執(zhí)行該指令中,處理器·將堆棧指針SP減到一個(gè)新值以便在堆棧中提供M值指示的附加空間量;·將下列推入該附加空間·寄存器組122的內(nèi)容,即,MT(A4,t2)、MT(A)、OV(A);
·為方法A4標(biāo)識(shí)以前的堆棧幀單元的堆棧幀指針SFP″;·將來(lái)自寄存器124的值作為堆棧幀指針SFP的新值讀入寄存器125。
在t4時(shí),處理器完成方法C7后遇到了指令LEAVEN。處理器在執(zhí)行該指令中·將底部幀的內(nèi)容彈出堆棧,將MT(A4,t2)、MT(A)、OV(A)和SFP″分別傳入寄存器PC、MTP、OVP和125;·將堆棧指針SP(在寄存器124中)乘以值N增至堆棧的新底部地址。處理器通過(guò)開始執(zhí)行地址MT(A4,t2)處的指令重新啟動(dòng)方法A4,它又在程序計(jì)數(shù)器寄存器PC中。
注意,Local CALL指令使用比Non-Local CALL指令較小的代碼尺碼和較少的指令。因此,通過(guò)提供這些指令兩者而不是單條CALL指令,每當(dāng)處理器從同一方法表中的一種方法變成另一種方法時(shí)其操作效率和速度都有明顯的提高。
圖4說(shuō)明按發(fā)明處理一條最簡(jiǎn)單的指令,即,Local CALL不用將變量或參數(shù)傳入或傳出堆棧。在本例中,不推送當(dāng)前正在執(zhí)行的方法(即,方法B1)的參數(shù)或產(chǎn)生調(diào)用的方法(即,方法B2)的局部變量。
在t0時(shí),處理器處在執(zhí)行方法B1的過(guò)程·寄存器OVP含有標(biāo)識(shí)存儲(chǔ)器20單元的基址OV(B),存儲(chǔ)器20含有對(duì)象B的對(duì)象變量。
·寄存器MTP含有標(biāo)識(shí)存儲(chǔ)器20單元的基址MT(B),存儲(chǔ)器20含有對(duì)象B的方法表(方法表B)。
·寄存器PC含有地址MT(B1,t0),該地址標(biāo)識(shí)存儲(chǔ)器20的單元,存儲(chǔ)器20含有處理器執(zhí)行方法B1時(shí)要執(zhí)行的下一條指令。
·寄存器POVP含有基址〔POVP〕,基址〔POVP〕標(biāo)識(shí)存儲(chǔ)器20的單元,存儲(chǔ)器20含有以前對(duì)象的對(duì)象變量(假定處理器以前曾處理過(guò)與對(duì)象有關(guān)的信息)。
·寄存器PMTP含有標(biāo)識(shí)存儲(chǔ)器20的單元的基址〔PMTP〕,存儲(chǔ)器20含有以前對(duì)象的方法表。
·寄存器PPC含有地址〔PPC〕,地址〔PPC〕標(biāo)識(shí)存儲(chǔ)器20的單元,存儲(chǔ)器20含有處理器執(zhí)行以前方法時(shí)要執(zhí)行的下一條指令。
·堆棧的基本幀含有·〔PPC〕、〔PMTP〕、〔POVP〕和標(biāo)識(shí)以前推入的堆棧幀地址的堆棧幀指針SFP′;·執(zhí)行方法B1期間已產(chǎn)生的任何局部變量LV(B1);和·執(zhí)行以前的方法期間已產(chǎn)生的任何以前推入的參數(shù)PPP。
在t1時(shí),處理器在執(zhí)行方法B1過(guò)程期間遇到了Local CALL指令CALL B2。包含在該指令的是一個(gè)為方法B2將指數(shù)列入方法表B的參數(shù)MTI(B2)。處理器在執(zhí)行該指令中·將第一個(gè)寄存器組121的內(nèi)容拷貝入第二個(gè)寄存器組122;·用參數(shù)MTI(B2)中載明的指數(shù)計(jì)算(在算術(shù)邏輯部件16中)含有方法B2的起始地址的方法表中的地址并將該地址裝入程序計(jì)數(shù)器寄存器PC中以開始執(zhí)行方法B2。
在t2時(shí),處理器完成方法B2后遇到RETURN指令。處理器在執(zhí)行該指令中·將寄存器PPC、PMTP、POVP的內(nèi)容分別讀入寄存器PC、MTP、OVP;·通過(guò)在地址MT(B1,t1)開始執(zhí)行該指令重新開始方法B1,它又在程序計(jì)數(shù)器寄存器PC中。
圖5說(shuō)明Non-Local CALL的處理,變量或參數(shù)沒(méi)有傳入或傳出堆棧。在該例子中,沒(méi)有為當(dāng)前正在執(zhí)行的方法(即,方法B1)推入?yún)?shù)或?yàn)檎{(diào)用的方法(即,方法C7)產(chǎn)生局部變量。
在t0時(shí),處理器處在執(zhí)行方法B1過(guò)程中·寄存器OVP包含標(biāo)識(shí)存儲(chǔ)器20的單元的基址OV(B),存儲(chǔ)器20含有對(duì)象B的對(duì)象變量。
·寄存器MTP含有標(biāo)識(shí)存儲(chǔ)器20的單元的基址MT(B),存儲(chǔ)器20含有對(duì)象B的方法表(方法表B)。
·寄存器PC含有地址MT(B1,t0),該地址標(biāo)識(shí)存儲(chǔ)器20的位置,存儲(chǔ)器20含有處理器執(zhí)行方法B1時(shí)要執(zhí)行的下一條指令。
·寄存器POVP含有基址〔POVP〕,該基址標(biāo)識(shí)存儲(chǔ)器20的位置,存儲(chǔ)器20含有以前對(duì)象的對(duì)象變量(假定處理器以前曾處理過(guò)與對(duì)象有關(guān)的信息)。
·寄存器PMTP含有標(biāo)識(shí)存儲(chǔ)器20的單元的基址〔PMTP〕,存儲(chǔ)器20含有以前對(duì)象的方法表。
·寄存器PPC含有地址〔PPC〕,該地址標(biāo)識(shí)存儲(chǔ)器20的位置,存儲(chǔ)器20含有處理器為以前的方法執(zhí)行的下一條指令。
·堆棧的基本幀含有·〔PPC〕、〔PMTP〕、〔POVP〕和標(biāo)識(shí)以前推入的堆棧幀地址的堆棧幀指針SFP′;·執(zhí)行方法B1期間已產(chǎn)生的任何局部變量LV(B1);和·執(zhí)行以前的方法期間已產(chǎn)生的任何以前推入的參數(shù)PPP。
在t1時(shí),處理器在執(zhí)行方法B1過(guò)程期間遇到了Non-Local指令CALL C7。包含在該指令中的是一個(gè)將指數(shù)列入方法C7的方法表C中的參數(shù)MTI(C7)。在執(zhí)行該指令中,處理器·將第一組寄存器121的內(nèi)容拷貝到第二組寄存器122中;·將指針OV(C)讀入寄存器OVP;·讀從存儲(chǔ)地址OV(C)-2來(lái)的方法表指針MT(C)并讀入寄存器MTP;·用參數(shù)MTI(C7)載明的指數(shù)計(jì)算(在算術(shù)邏輯部件16中)包含方法C7的起始地址的方法表中的地址并將該地址裝入程序計(jì)數(shù)器寄存器PC中以便開始執(zhí)行方法C7。
在t2時(shí),處理器完成方法B2后遇到了RETURN指令。在執(zhí)行該指令中,處理器·將寄存器PPC、PMTP、POVP的內(nèi)容分別讀入寄存器PC、MTP、OVP;·通過(guò)執(zhí)行開始在地址MT(B1,t1)的指令重新開始方法B1,它又在程序計(jì)數(shù)器寄存器PC中。
為便于執(zhí)行不同的方法,在它們使用期間,最好將當(dāng)前對(duì)象的對(duì)象變量和該對(duì)象的方法表存儲(chǔ)在一個(gè)快速訪問(wèn)存儲(chǔ)器中諸如高速緩存存儲(chǔ)器。為了加速在高速緩沖存儲(chǔ)器中存儲(chǔ)當(dāng)前對(duì)象的對(duì)象變量和方法表的過(guò)程和為了方便地經(jīng)濟(jì)使用高速緩沖存儲(chǔ)器中的存儲(chǔ)空間,描述對(duì)象的變量和方法表大小的信息預(yù)存在存儲(chǔ)器中與各個(gè)方法表的基址相關(guān)的預(yù)定單元中。圖6示出了這方面的舉例實(shí)施方案,其中·描述對(duì)象變量大小的信息存儲(chǔ)在存儲(chǔ)器20的一個(gè)單元中,該存儲(chǔ)器有基址MT-2;
·描述對(duì)象的方法表尺寸的信息存儲(chǔ)在存儲(chǔ)器20的一個(gè)單元中,存儲(chǔ)器20有基址MT-4。
在該實(shí)施方案中,當(dāng)指示處理器執(zhí)行Non-Local CALL時(shí),它類似于通常參照?qǐng)D3描述的操作。然而,更具體地說(shuō),如果處理器用高速緩沖存儲(chǔ)器來(lái)保存當(dāng)前的對(duì)象變量和/或方法表,則當(dāng)收到Non-LocalCALL時(shí)用相應(yīng)尺寸的信息來(lái)更新該高速緩沖存儲(chǔ)器。在圖3中,作為一個(gè)例子,在t2時(shí)碰到的CALLC7指令;在本實(shí)施方案中包含在指令中的鏈路也將是存儲(chǔ)器20中的基址OV(C)。然而,現(xiàn)在,處理器用自然的知識(shí)(inherent knowledge)操作OV(C)-2、MT(C)-2和MT(C)-4是含有方法表指針MT(C)、對(duì)象C變量尺寸和對(duì)象C方法表的尺寸的存儲(chǔ)器20中的地址。在處理器執(zhí)行CALL C7指令中·將指針OV(C)讀入寄存器OVP;·讀來(lái)自存儲(chǔ)單元OV(C)-2的方法表指針MT(C)并讀入寄存器MTP;·將來(lái)自存儲(chǔ)單元MT(C)-2和MT(C)-4的尺寸信息讀入高速緩沖存儲(chǔ)器;·使用參數(shù)MTI(C7)中載明的,包含在CALL C7指令中的指數(shù)計(jì)算含有方法C7的起始地址的方法表中的地址并將該地址裝入程序計(jì)數(shù)器寄存器PC中以便開始執(zhí)行方法C7;·讀來(lái)自存儲(chǔ)器20相應(yīng)單元的對(duì)象C變量和方法表(現(xiàn)在在寄存器OVP和MTP中指定)并讀入高速緩沖存儲(chǔ)器。
注意,在環(huán)境寄存器集中的任何或所有寄存器都可能包含高速緩沖存儲(chǔ)器中的專用存儲(chǔ)單元。這些專門存儲(chǔ)單元可改變成例如,處理器中高速緩存管理器指定的任何單元,但對(duì)處理器永遠(yuǎn)是知道的。
為了進(jìn)一步方便執(zhí)行不同的方法,最好將給定義由當(dāng)前在使用的方法表確定的方法的編碼信息也存儲(chǔ)在快速訪問(wèn)存儲(chǔ)器中。為加速存儲(chǔ)該信息的進(jìn)程和方便于經(jīng)濟(jì)使用快速訪問(wèn)存儲(chǔ)器中的空間,表示編碼信息的所需空間的尺寸數(shù)據(jù)和編碼信息存儲(chǔ)在存儲(chǔ)器中,例如,在每種方法的開始地址處,如由相應(yīng)方法表標(biāo)識(shí)的那樣。
權(quán)利要求
1.一種操作處理器10的使用多個(gè)對(duì)象的變量和方法表的方法,所述的方法包含a.為多個(gè)對(duì)象中的至少一個(gè)在存儲(chǔ)器20中存儲(chǔ)至少一個(gè)對(duì)象變量;b.在存儲(chǔ)器20中為多個(gè)對(duì)象存儲(chǔ)至少一個(gè)方法表存儲(chǔ);c.提供第一個(gè)專用存儲(chǔ)器121以存儲(chǔ)位于當(dāng)前使用至少一個(gè)對(duì)象變量和至少一張方法表的存儲(chǔ)器中的指針;d.提供第二個(gè)專用存儲(chǔ)器122以存儲(chǔ)位于以前使用至少一個(gè)對(duì)象變量和至少一張方法表的存儲(chǔ)器中的指針。
2.如權(quán)利要求1的方法,其中第一個(gè)和第二個(gè)專用存儲(chǔ)器包含相應(yīng)的第一和第二組專用寄存器。
3.如權(quán)利要求2的方法,其中第一和第二組專用寄存器分別包含一個(gè)當(dāng)前的程序計(jì)數(shù)器寄存器PC和一個(gè)以前的程序計(jì)數(shù)器寄存器PPC。
4.如權(quán)利要求1的方法,其中處理器利用存儲(chǔ)在第一個(gè)專用存儲(chǔ)器中的指針將由所述的指針確定的一個(gè)方法表的至少是組成部分讀高速緩沖存儲(chǔ)器。
5.如權(quán)利要求4的方法,其中處理器利用存儲(chǔ)在第一個(gè)專用存儲(chǔ)器中的指針將由所述的指針確定的對(duì)象變量的至少是組成部分讀高速緩沖存儲(chǔ)器。
6.如權(quán)利要求1的方法,其中方法表指針存儲(chǔ)在預(yù)先確定的位置。
7.如權(quán)利要求6的方法,其中將預(yù)先確定好的位置連接到相關(guān)的對(duì)象變量的位置。
8.如權(quán)利要求1的方法,其中表示存儲(chǔ)信息所需的空間的大小數(shù)據(jù)存儲(chǔ)在存儲(chǔ)器單元上,該信息包含相應(yīng)對(duì)象的任何對(duì)象變量和方法表,該存儲(chǔ)器單元?jiǎng)t存儲(chǔ)與所述的相應(yīng)對(duì)象有關(guān)的信息的存儲(chǔ)單元連接,處理器利用所述的大小數(shù)據(jù)將所述的信息存儲(chǔ)在快速訪問(wèn)的存儲(chǔ)器里。
9.如權(quán)利要求8的方法,其中快速訪問(wèn)存儲(chǔ)器包含一個(gè)高速緩沖存儲(chǔ)器。
10.如權(quán)利要求8的方法,其中大小數(shù)據(jù)存儲(chǔ)在從存儲(chǔ)相應(yīng)對(duì)象的方法表的單元開始改址的存儲(chǔ)單元里。
11.如權(quán)利要求1的方法,其中表示存儲(chǔ)信息所需空間的大小數(shù)據(jù)與所述的信息存儲(chǔ)在存儲(chǔ)器里,該信息定義由至少一個(gè)方法表確定的方法,所述的處理器利用所述的大小數(shù)據(jù)將所述的信息存儲(chǔ)在快速訪問(wèn)的存儲(chǔ)器里。
12.如權(quán)利要求1的方法,其中處理器停止執(zhí)行第一種方法,為此將相應(yīng)對(duì)象變量和方法表指針盛裝在第一個(gè)專用存儲(chǔ)器中通過(guò)以下步驟執(zhí)行第二種方法a將來(lái)自第一個(gè)專用存儲(chǔ)器讀所述指針至第二個(gè)專用存儲(chǔ)器;b開始執(zhí)行第二種方法。
13.如權(quán)利要求12的方法,其中,停止執(zhí)行第二種方法后,處理器通過(guò)從第二個(gè)專用存儲(chǔ)器讀所述的指針至第一個(gè)專用存儲(chǔ)器重新開始執(zhí)行第一種方法。
14.如權(quán)利要求12的方法,其中從第一個(gè)專用存儲(chǔ)器讀所述指針至第二個(gè)專用存儲(chǔ)器后,處理器為第二種方法將來(lái)自各個(gè)存儲(chǔ)單元的對(duì)象變量指針和方法表指針讀第一個(gè)專用存儲(chǔ)器。
15.如權(quán)利要求14的方法,其中停止執(zhí)行第二種方法后,處理器通過(guò)從第二個(gè)專用存儲(chǔ)器讀所述指針至第一個(gè)專用存儲(chǔ)器重新開始執(zhí)行第一種方法。
16.如權(quán)利要求1的方法,其中處理器停止執(zhí)行第一種方法,為此將相應(yīng)對(duì)象變量和方法表指針裝入第一個(gè)專用存儲(chǔ)器;通過(guò)以下步驟執(zhí)行第二種方法a從第一個(gè)專用存儲(chǔ)器讀指針至第二個(gè)專用存儲(chǔ)器;b.從第二個(gè)專用存儲(chǔ)器讀所述指針至第三個(gè)存儲(chǔ)區(qū);c.開始執(zhí)行第二種方法。
17.如權(quán)利要求16的方法,其中處理器停止執(zhí)行第二種方法后通過(guò)從第二個(gè)專用存儲(chǔ)器讀所述指針至第一個(gè)專用存儲(chǔ)器重新開始執(zhí)行第一種方法。
18.如權(quán)利要求16的方法,其中第三個(gè)存儲(chǔ)區(qū)可用指針尋址。
19.如權(quán)利要求18的方法,其中第三個(gè)存儲(chǔ)區(qū)包含一個(gè)LIFO堆棧。
20.如權(quán)利要求1的方法,其中處理器停止執(zhí)行第一種方法,為此將相應(yīng)對(duì)象變量和方法表指針裝入第一個(gè)專用存儲(chǔ)器;通過(guò)以下步驟執(zhí)行第二種方法a從第一個(gè)專用存儲(chǔ)器讀指針至第二個(gè)專用存儲(chǔ)器;b從第二個(gè)專用存儲(chǔ)器讀所述指針至第三個(gè)存儲(chǔ)區(qū);c為第二種方法從各個(gè)存儲(chǔ)器位置讀對(duì)象變量指針和方法表指針至第一個(gè)專用存儲(chǔ)器;d開始執(zhí)行第二種方法。
21.如權(quán)利要求20的方法,其中處理器停止執(zhí)行第二種方法后通過(guò)從第二個(gè)專用存儲(chǔ)器讀所述指針至第一個(gè)專用存儲(chǔ)器重新開始執(zhí)行第一種方法。
22.如權(quán)利要求20的方法,其中第三個(gè)存儲(chǔ)區(qū)可通過(guò)指針尋址。
23.如權(quán)利要求22的方法,其中第三個(gè)存儲(chǔ)區(qū)包含一個(gè)LIFO堆棧。
全文摘要
面向?qū)ο筇幚硗ㄟ^(guò)將指針保存到專用寄存器中對(duì)象變量和方法表的存儲(chǔ)位置來(lái)執(zhí)行。處理器當(dāng)前和以前操作的指針保存在相應(yīng)的第一和第二組專用寄存器中。為每個(gè)對(duì)象、將相應(yīng)的對(duì)象變量存儲(chǔ)在存儲(chǔ)單元上且將對(duì)應(yīng)于相應(yīng)方法表的指針存儲(chǔ)在距離對(duì)象變量的單元編碼的存儲(chǔ)位置上。
文檔編號(hào)G06F9/44GK1320239SQ00801392
公開日2001年10月31日 申請(qǐng)日期2000年5月10日 優(yōu)先權(quán)日1999年5月12日
發(fā)明者K·羅斯, W·L·薩維勒 申請(qǐng)人:皇家菲利浦電子有限公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
霸州市| 南昌县| 卓资县| 皮山县| 宿迁市| 柳州市| 通渭县| 香港| 西乌珠穆沁旗| 肃南| 行唐县| 东方市| 井研县| 湾仔区| 太白县| 大关县| 永新县| 托克逊县| 沙雅县| 南平市| 益阳市| 阿尔山市| 沙雅县| 乐业县| 阳城县| 射阳县| 芦溪县| 阿勒泰市| 云林县| 越西县| 马尔康县| 灵宝市| 定陶县| 大宁县| 安丘市| 灵武市| 西林县| 托克逊县| 义马市| 宜兰县| 灵璧县|