專利名稱:用專用的指針存儲器進行面向?qū)ο蟮奶幚淼闹谱鞣椒?br>
技術(shù)領(lǐng)域:
本發(fā)明涉及本發(fā)明涉及面向?qū)ο蟮奶幚砗?,特別是涉及與對象有關(guān)的信息的處理。
2.有關(guān)技術(shù)的描述在面向?qū)ο蟮奶幚碇?,處理器處理與對象有關(guān)的信息。這種面向?qū)ο筇幚淼挠行﹥?yōu)點和用法在美國專利5708838中描述。
對象的每個使例都有一組定義與該對象有關(guān)的特性和該對象支持的方法的對象變量。例如,位于RAM的FIFO的那一組對象變量一般將包括定義FIFO的最大尺寸的代碼、它當前占用的存儲器的單元數(shù)、它的輸入的當前存儲單元和它的輸出的當前存儲單元。由FIFO對象支持的方法一般將包括執(zhí)行典型的FIFO功能的操作諸如APPEND,REMOVE,FLUSH,INITIALILE。
采用面向?qū)ο筇幚淼囊粋€缺點是,它一般需要存儲和處理比面向結(jié)構(gòu)或面向數(shù)據(jù)流處理更多的指令。因此,面向?qū)ο蟮奶幚硪_到更大的通用性要提供更多的代碼空間并增加訪問方法所需的時間以執(zhí)行操作。
一般,對象支持的方法按照算法處理對象變量和提供關(guān)于這些對象的非易失信息參數(shù)。對象可以包含其他對象的基準點,它們自身可以在方法的施行中作為參數(shù)傳遞并可能需要調(diào)用其他對象的方法。這會是面向?qū)ο筇幚淼姆浅YM時的情況。
發(fā)明概述發(fā)明目的是要減輕采用面向?qū)ο筇幚淼纳鲜鋈秉c。
按照本發(fā)明,處理器以減少代碼空間和訪問時間的方式處理當前和以前的對象變量及為與當前和以前對象相關(guān)的方法列出存儲單元的當前和以前的方法表。為此目的,處理器·為多個對象的至少一個在存儲器中存儲至少一個對象變量;·為多個對象在存儲器存儲至少一個方法表;·提供第一個專用的存儲區(qū)以便存儲處在存儲器中當前使用至少一個對象變量和至少一個方法表的指針;·提供第二個專用的存儲區(qū)以便存儲處在存儲器中以前使用至少一個對象變量和至少一個方法表的指針。
該處理器通過利用專用的包含它們各自的指針的存儲區(qū)自然地知道當前的和以前的對象變量和方法表處在哪里。這樣就能使指向?qū)ο笞兞亢头椒ū淼拇a尺寸變得最小。通過為當前和以前的對象變量及方法表兩者該處理器提供專用的存儲區(qū)能很快地從當前的對象方法轉(zhuǎn)向以前的對象方法。
注意,“存儲器”一詞(如這里所用的)旨在一般地盡量解釋與它使用的方式一致且包括各種易失和非易失設備包括(但不限于)這類設備的RAMs、DRAMs、ROMs、寄存器和這些設備的組合。“專用”存儲區(qū)指有一個或多個該處理器已知的具體單元的存儲區(qū)。然而,這些單元不一定是固定的,而是在該處理器的控制下可以改變的。而且,“指針”一詞,如這里所用,指標識存儲單元的任何值。除外,“讀”指從一個存儲器檢索信息并將它寫入到另一個存儲器。
附圖簡述
圖1是一幅框圖說明按本發(fā)明的一個實施方案建造的面向?qū)ο筇幚硐到y(tǒng)的各個部分。
圖2-5是簡圖按發(fā)明的實施方案說明圖1系統(tǒng)的操作。
圖6是一幅框圖說明按照本發(fā)明的實施方案建造的存儲器的組成部分。
優(yōu)選實施方案的描述圖1的面向?qū)ο筇幚硐到y(tǒng)包含處理器10和存儲器20。示范性的處理器10是一個臺硬件加速單元,它用時鐘脈沖排定由程序計數(shù)寄存器標識的指令。一般,程序計數(shù)寄存器含有處理器要讀和操作的下一條指令的存儲單元。
該處理器除包含別的東西外還包含環(huán)境寄存器集12、指令譯碼器14和算術(shù)邏輯單元16。存儲器20,在本舉例實施方案中,包含一個有多個存儲單元的RAM用以存儲,除別的東西外,對象變量、方法表指針、方法表以及用作LIFO堆棧以便執(zhí)行這些方法。
處理器10和存儲器20連接到公共總線30以便互相通訊以及與連接到該總線的其他硬件通訊。該總線包含有關(guān)的線路以便攜帶信息諸如地址、中斷、數(shù)據(jù)、讀選通、寫選通和設備選擇選通。最好,這是一條高速總線,它至少部分地與處理器和存儲器在一個共同的硅基片上形成。
環(huán)境寄存器集12包含第一和第二組寄存器121和122,這兩組寄存器用于保存與該處理器的當前和以前的操作有關(guān)的信息,一個或多個通用寄存器123和用于給堆棧編址的兩個寄存器124和125。更具體地說,環(huán)境寄存器集中的寄存器包含·一個對象變量指針寄存器OVP用以為當前的對象保存標識變量集在存儲器中的位置的指針;·一個以前對象變量指針寄存器POVP用以為以前的對象保存標識變量集在存儲器中的位置的指針;·一個方法表指針寄存器MTP用以為當前的對象保存標識方法表存儲器中單元的指針;·一個以前的方法表指針寄存器PMTP用以為以前的對象保存標識方法表在存儲器中的位置的指針;·一個不斷更新的程序計數(shù)器寄存器PC用以保存由處理器操作的下一條指令的存儲器地址;·一個以前的程序計數(shù)器寄存器PPC用以保存以前保存在程序計數(shù)器寄存器中未執(zhí)行的指令的存儲器地址;·通用寄存器123用以存儲從存儲器20讀出或由算術(shù)邏輯部件16產(chǎn)生的數(shù)據(jù);·寄存器124用以保存標識被訪問的當前堆棧地址存儲器中位置的堆棧指針SP;·寄存器125用以保存標識堆棧底部幀基址存儲器中位置的堆棧幀指針SFP。
指令譯碼器14是一個傳統(tǒng)的硬件部件諸如定序器或微定序器,將從存儲器20讀出的指令轉(zhuǎn)換成由算術(shù)邏輯部件16執(zhí)行的低級操作代碼。該算術(shù)邏輯部件也是一個傳統(tǒng)的硬件部件。
注意,為簡單起見,圖1所示的存儲器20僅說明了存儲器空間的一個塊,它的每一個都屬于·一個對象的具體實例的對象變量;·一個方法表指針,該指針為該對象的具體實例標識方法表存儲器中的位置;和·由該方法表指針確定的方法表。實際上,一般有若干塊存儲器空間用于不同的對象變量,用于不同的方法表,用于它們各自的指針且還用于圖1未示出的其他信息(例如,給方法表確定的方法編碼)。存儲空間塊數(shù)主要取決于對象數(shù)和它們支持的方法數(shù)和是否有任何塊共用來存儲與多于一個對象有關(guān)的信息。例如,同一個方法表可以有時由同一總類的若干不同對象使用。然而,對對象的每個實例來說,各自的方法表指針存儲在預先確定的位置中,即在該處理器訪問前有時確定的位置中。一種可替用的方法是,將指針作為該處理器將要訪問的指令的組成部分來存儲。然而,在本發(fā)明的特別便利實施方案中,方法表指針存儲在與相關(guān)對象量的位置有預先確定關(guān)系的存儲位置里。在圖1所示的舉例實施方案中,每個方法表指針都存儲在有基址(起始)的存儲單元里,該基址等于OV-2,即存儲在比對象變量的OV基址的值小2的地址中。方法表的存儲器塊有MT的基址。
處理器10用特定的指令在環(huán)境的寄存器集中的第一和第二寄存器組121和122間傳輸與對象有關(guān)的信息并傳入和傳出該堆棧。這些指令在該舉例實施方案中叫作CALL、RETURN、ENTER〔M〕和LEAVE(N〕,這些指令一般描述如下·CALL指令使處理器開始執(zhí)行一種不同的方法。該指令有兩種不同的形式,即Local CALL和Non-Local CALL;·Local CALL使處理器開始執(zhí)行當前使用中的方法表中編址的方法。該指令使處理器將寄存器PC、MTP、OVP的內(nèi)容分別讀入寄存器PPC、PMTP、POVP中并用當前要執(zhí)行的新方法的第一條指令的地址更新寄存器PC。
·Non-Local CALL使處理器開始執(zhí)行當前不使用的方法表中編址的方法且為了與當前的方法表不同的對象。該指令執(zhí)行Local CALL執(zhí)行的一切,但進一步使處理器分別用新的方法表指針和新的對象變量指針更新寄存器MTP和OVP。
·RETURN指令使處理器開始返回去執(zhí)行以前的方法。該指令使處理器將寄存器PPC、PMTP、POVP的內(nèi)容分別讀入寄存器PC、MTP、OVP。
·ENTER指令使處理器將寄存器124中的值減1,即堆棧指針SP中的值減1,變成將提供足夠的存儲空間存儲局部變量即,與當前正在執(zhí)行的方法相關(guān)的變量的地址。所需的空間由M值表示,它形成ENTER指令的組成部分。然后,處理器將寄存器PPC、PMTP、POVP和125(當前堆棧幀指針SFP)的內(nèi)容推入堆棧、將堆棧指針SP值減至提供由M值表示的空間和由新推入的信息占用的空間的值,并將來自寄存器124的值作為堆棧幀指針SFP的新值讀入寄存器125。
·LEAVE指令使處理器將底部幀的內(nèi)容彈出堆棧。特別是,底部幀包含寄存器PPC、PMTP、POVP和SFP’的值最后推入的內(nèi)容,處理器將它們分別讀入寄存器PC、MTP、OVP和125。在完成該指令時,處理器將堆棧指針SP加1至堆棧的新基址。這由包含在指令中的N值提供方便,它表示在底部幀中已由未被存儲的信息(例如,參數(shù)和變量)占據(jù)的任何存儲空間。
圖2說明處理器在連續(xù)時期之間操作的示范性順序。該圖由三列組成,第一列表示由處理器臨時執(zhí)行的操作,第二列表示第一和第二組寄存器121和122的臨時內(nèi)容和第三列表示堆棧的臨時內(nèi)容。注意括號表征寄存器或其他存儲單元的內(nèi)容。例如,〔PC〕表示程序計數(shù)器寄存器PC的內(nèi)容。
該順序始于時間t0這時處理器處在執(zhí)行方法A4的過程,它是對象A的方法表編址的第四種方法。在該時間·寄存器OVP裝有基址OV(A),該基址OV(A)標識含有對象A的對象變量的存儲器20中單元。
·寄存器MTP裝有標識含有對象A的方法表(方法表A)的存儲器20中的單元基址MT(A)。
·寄存器PC裝有MT地址(A4,t0),該地址標識含有處理器在執(zhí)行A4方法中要執(zhí)行的下一條指令的存儲器20中的單元。
·寄存器POVP含有基址〔POVP〕,該基址〔POVP〕標識含有以前對象的對象變量(假定處理器以前處理過與對象有關(guān)的信息)的存儲器20中的單元。
·寄存器PMTP裝有標識存儲器20中的單元的基址〔PMTP〕,存儲器20包含以前對象的方法表。
·寄存器PPC含有地址〔PPC〕,該地址〔PPC〕標識包含在存儲器20中的單元,存儲器20含有處理器為以前的方法執(zhí)行的下一條指令。
·堆棧的基本幀由堆棧的幀指針SFP標識并包含若干相鄰的存儲器地址,該堆棧的基本幀包含·〔PPC〕、〔PMTP〕、〔POVP〕和標識以前推入堆棧幀的地址的堆棧幀指針SFP′;·任何局部變量LV(A4),這些變量是在執(zhí)行A4方法期間產(chǎn)生的,例如,在進行計算時產(chǎn)生的循環(huán)數(shù);和·任何以前推入的參數(shù)PPP,該參數(shù)是在執(zhí)行以前的方法期間產(chǎn)生的,例如,要修改的對象的指針或要由后面執(zhí)行的方法使用的變量。
在t1時,處理器將方法A4期間產(chǎn)生的參數(shù)PP(A4)推入由第一次將寄存器124中的堆棧指針SP減1至標識堆棧新的底部地址的新值的堆棧和然后將這些參數(shù)存儲在地址里。它還開始在該地址執(zhí)行仍然包含在程序計數(shù)器寄存器PC中的指令,即,地址MT(A4,t0)并將寄存器PC減1以標識要執(zhí)行的下一條指令的地址,即,地址MT(A4,t1)。
在t2時,處理器在執(zhí)行方法A4過程期間碰到了Local CALL指令CALL A2。包含在該指令中的是為方法A2將一個指數(shù)列入方法表A中的參數(shù)MTI(A2)。在執(zhí)行該指令中,處理器·將第一組寄存器121的內(nèi)容拷貝到第二組寄存器122中;·用參數(shù)MTI(A2)載明的指數(shù)計算(在算術(shù)邏輯部件16中)含有方法A2的起始地址的方法表中的地址并將該地址裝入程序計數(shù)器寄存器PC以便開始執(zhí)行A2方法。
在t3時,處理器在執(zhí)行方法A2過程期間碰到了指令ENTER M。處理器在執(zhí)行該指令中·將堆棧指針SP減至一個新值以便在堆棧中提供由變量M的值表示的附加空間量,該變量在執(zhí)行方法A2期間產(chǎn)生;·將下列推入該附加空間·寄存器組122的內(nèi)容,即MT(A4,t2)、MT(A)、OV(A);·標識方法A4的以前堆棧幀單元的堆棧幀指針SFP″;·將來自寄存器124的值作為堆棧幀指針SFP的新值讀入寄存器125。
在t4時,處理器完成了A2方法后遇到了指令LEAVE N。處理器在執(zhí)行該指令時·將底部幀的內(nèi)容彈出堆棧,將MT(A4,T2)、MT(A)、OV(A)和SFP″分別傳入寄存器PC、MTP、OVP和125;·將堆棧指針SP(在寄存器124中)乘以N值增至堆棧新底部地址。處理器通過開始在地址MT(A4,t2)執(zhí)行指令重新啟動方法A4,它又在程序計數(shù)器寄存器PC中。
圖3類似于圖2,但說明了事件的舉例順序,這些事件在處理Non-Local CALL期間發(fā)生。在這種情況下,t0和t1時同的事件與圖2的事件一致。然而,t2時,處理器遇到的不是方法A2(在方法表A中)的Local CALL而是方法C7(在方法C中)的Non-Local CALL。一般,向不類似的對象種類相關(guān)的不同類型方法提供不同的方法表。例如,方法表A可用于與FIFO操作相關(guān)的方法而方法表C可用于與直接訪問存儲器(DMA)操作相關(guān)的方法。
參考圖3,在t2時,處理器在執(zhí)行方法A4過程期間碰到Non-LocalCALL指令CALL C7。包含在該指令中的是一個與包含對象C的對象變量的基本存儲地址和將指數(shù)列入方法C7的方法表C參數(shù)MTI(C7)的鏈路。對存入含有OV(C)的C的對象變量或指數(shù)的基址來說,該鏈路可以是實際的指針OV(C)。在本舉例中指令包含指針OV(C)自身。在執(zhí)行該Non-Local CALL指令中,處理器·將第一組寄存器121的內(nèi)容拷入第二寄存器122;·將指針OV(C)讀入寄存器OVP;·讀從存儲地址OV(C)-2來的方法表指針MT(C)并讀入寄存器MTP;·用參數(shù)MTI(C7)載明的指數(shù)計算(在算術(shù)邏輯部件16中)包含方法C7的起始地址的方法表中地址并將該地址裝入程序計數(shù)器寄存器PC以開始執(zhí)行方法C7。
而順序和圖2描述的順序相同。具體講,在t3時,在執(zhí)行方法C7過程期間處理器遇到了指令ENTERM。在執(zhí)行該指令中,處理器·將堆棧指針SP減到一個新值以便在堆棧中提供M值指示的附加空間量;·將下列推入該附加空間·寄存器組122的內(nèi)容,即,MT(A4,t2)、MT(A)、OV(A);
·為方法A4標識以前的堆棧幀單元的堆棧幀指針SFP″;·將來自寄存器124的值作為堆棧幀指針SFP的新值讀入寄存器125。
在t4時,處理器完成方法C7后遇到了指令LEAVEN。處理器在執(zhí)行該指令中·將底部幀的內(nèi)容彈出堆棧,將MT(A4,t2)、MT(A)、OV(A)和SFP″分別傳入寄存器PC、MTP、OVP和125;·將堆棧指針SP(在寄存器124中)乘以值N增至堆棧的新底部地址。處理器通過開始執(zhí)行地址MT(A4,t2)處的指令重新啟動方法A4,它又在程序計數(shù)器寄存器PC中。
注意,Local CALL指令使用比Non-Local CALL指令較小的代碼尺碼和較少的指令。因此,通過提供這些指令兩者而不是單條CALL指令,每當處理器從同一方法表中的一種方法變成另一種方法時其操作效率和速度都有明顯的提高。
圖4說明按發(fā)明處理一條最簡單的指令,即,Local CALL不用將變量或參數(shù)傳入或傳出堆棧。在本例中,不推送當前正在執(zhí)行的方法(即,方法B1)的參數(shù)或產(chǎn)生調(diào)用的方法(即,方法B2)的局部變量。
在t0時,處理器處在執(zhí)行方法B1的過程·寄存器OVP含有標識存儲器20單元的基址OV(B),存儲器20含有對象B的對象變量。
·寄存器MTP含有標識存儲器20單元的基址MT(B),存儲器20含有對象B的方法表(方法表B)。
·寄存器PC含有地址MT(B1,t0),該地址標識存儲器20的單元,存儲器20含有處理器執(zhí)行方法B1時要執(zhí)行的下一條指令。
·寄存器POVP含有基址〔POVP〕,基址〔POVP〕標識存儲器20的單元,存儲器20含有以前對象的對象變量(假定處理器以前曾處理過與對象有關(guān)的信息)。
·寄存器PMTP含有標識存儲器20的單元的基址〔PMTP〕,存儲器20含有以前對象的方法表。
·寄存器PPC含有地址〔PPC〕,地址〔PPC〕標識存儲器20的單元,存儲器20含有處理器執(zhí)行以前方法時要執(zhí)行的下一條指令。
·堆棧的基本幀含有·〔PPC〕、〔PMTP〕、〔POVP〕和標識以前推入的堆棧幀地址的堆棧幀指針SFP′;·執(zhí)行方法B1期間已產(chǎn)生的任何局部變量LV(B1);和·執(zhí)行以前的方法期間已產(chǎn)生的任何以前推入的參數(shù)PPP。
在t1時,處理器在執(zhí)行方法B1過程期間遇到了Local CALL指令CALL B2。包含在該指令的是一個為方法B2將指數(shù)列入方法表B的參數(shù)MTI(B2)。處理器在執(zhí)行該指令中·將第一個寄存器組121的內(nèi)容拷貝入第二個寄存器組122;·用參數(shù)MTI(B2)中載明的指數(shù)計算(在算術(shù)邏輯部件16中)含有方法B2的起始地址的方法表中的地址并將該地址裝入程序計數(shù)器寄存器PC中以開始執(zhí)行方法B2。
在t2時,處理器完成方法B2后遇到RETURN指令。處理器在執(zhí)行該指令中·將寄存器PPC、PMTP、POVP的內(nèi)容分別讀入寄存器PC、MTP、OVP;·通過在地址MT(B1,t1)開始執(zhí)行該指令重新開始方法B1,它又在程序計數(shù)器寄存器PC中。
圖5說明Non-Local CALL的處理,變量或參數(shù)沒有傳入或傳出堆棧。在該例子中,沒有為當前正在執(zhí)行的方法(即,方法B1)推入?yún)?shù)或為調(diào)用的方法(即,方法C7)產(chǎn)生局部變量。
在t0時,處理器處在執(zhí)行方法B1過程中·寄存器OVP包含標識存儲器20的單元的基址OV(B),存儲器20含有對象B的對象變量。
·寄存器MTP含有標識存儲器20的單元的基址MT(B),存儲器20含有對象B的方法表(方法表B)。
·寄存器PC含有地址MT(B1,t0),該地址標識存儲器20的位置,存儲器20含有處理器執(zhí)行方法B1時要執(zhí)行的下一條指令。
·寄存器POVP含有基址〔POVP〕,該基址標識存儲器20的位置,存儲器20含有以前對象的對象變量(假定處理器以前曾處理過與對象有關(guān)的信息)。
·寄存器PMTP含有標識存儲器20的單元的基址〔PMTP〕,存儲器20含有以前對象的方法表。
·寄存器PPC含有地址〔PPC〕,該地址標識存儲器20的位置,存儲器20含有處理器為以前的方法執(zhí)行的下一條指令。
·堆棧的基本幀含有·〔PPC〕、〔PMTP〕、〔POVP〕和標識以前推入的堆棧幀地址的堆棧幀指針SFP′;·執(zhí)行方法B1期間已產(chǎn)生的任何局部變量LV(B1);和·執(zhí)行以前的方法期間已產(chǎn)生的任何以前推入的參數(shù)PPP。
在t1時,處理器在執(zhí)行方法B1過程期間遇到了Non-Local指令CALL C7。包含在該指令中的是一個將指數(shù)列入方法C7的方法表C中的參數(shù)MTI(C7)。在執(zhí)行該指令中,處理器·將第一組寄存器121的內(nèi)容拷貝到第二組寄存器122中;·將指針OV(C)讀入寄存器OVP;·讀從存儲地址OV(C)-2來的方法表指針MT(C)并讀入寄存器MTP;·用參數(shù)MTI(C7)載明的指數(shù)計算(在算術(shù)邏輯部件16中)包含方法C7的起始地址的方法表中的地址并將該地址裝入程序計數(shù)器寄存器PC中以便開始執(zhí)行方法C7。
在t2時,處理器完成方法B2后遇到了RETURN指令。在執(zhí)行該指令中,處理器·將寄存器PPC、PMTP、POVP的內(nèi)容分別讀入寄存器PC、MTP、OVP;·通過執(zhí)行開始在地址MT(B1,t1)的指令重新開始方法B1,它又在程序計數(shù)器寄存器PC中。
為便于執(zhí)行不同的方法,在它們使用期間,最好將當前對象的對象變量和該對象的方法表存儲在一個快速訪問存儲器中諸如高速緩存存儲器。為了加速在高速緩沖存儲器中存儲當前對象的對象變量和方法表的過程和為了方便地經(jīng)濟使用高速緩沖存儲器中的存儲空間,描述對象的變量和方法表大小的信息預存在存儲器中與各個方法表的基址相關(guān)的預定單元中。圖6示出了這方面的舉例實施方案,其中·描述對象變量大小的信息存儲在存儲器20的一個單元中,該存儲器有基址MT-2;
·描述對象的方法表尺寸的信息存儲在存儲器20的一個單元中,存儲器20有基址MT-4。
在該實施方案中,當指示處理器執(zhí)行Non-Local CALL時,它類似于通常參照圖3描述的操作。然而,更具體地說,如果處理器用高速緩沖存儲器來保存當前的對象變量和/或方法表,則當收到Non-LocalCALL時用相應尺寸的信息來更新該高速緩沖存儲器。在圖3中,作為一個例子,在t2時碰到的CALLC7指令;在本實施方案中包含在指令中的鏈路也將是存儲器20中的基址OV(C)。然而,現(xiàn)在,處理器用自然的知識(inherent knowledge)操作OV(C)-2、MT(C)-2和MT(C)-4是含有方法表指針MT(C)、對象C變量尺寸和對象C方法表的尺寸的存儲器20中的地址。在處理器執(zhí)行CALL C7指令中·將指針OV(C)讀入寄存器OVP;·讀來自存儲單元OV(C)-2的方法表指針MT(C)并讀入寄存器MTP;·將來自存儲單元MT(C)-2和MT(C)-4的尺寸信息讀入高速緩沖存儲器;·使用參數(shù)MTI(C7)中載明的,包含在CALL C7指令中的指數(shù)計算含有方法C7的起始地址的方法表中的地址并將該地址裝入程序計數(shù)器寄存器PC中以便開始執(zhí)行方法C7;·讀來自存儲器20相應單元的對象C變量和方法表(現(xiàn)在在寄存器OVP和MTP中指定)并讀入高速緩沖存儲器。
注意,在環(huán)境寄存器集中的任何或所有寄存器都可能包含高速緩沖存儲器中的專用存儲單元。這些專門存儲單元可改變成例如,處理器中高速緩存管理器指定的任何單元,但對處理器永遠是知道的。
為了進一步方便執(zhí)行不同的方法,最好將給定義由當前在使用的方法表確定的方法的編碼信息也存儲在快速訪問存儲器中。為加速存儲該信息的進程和方便于經(jīng)濟使用快速訪問存儲器中的空間,表示編碼信息的所需空間的尺寸數(shù)據(jù)和編碼信息存儲在存儲器中,例如,在每種方法的開始地址處,如由相應方法表標識的那樣。
權(quán)利要求
1.一種操作處理器10的使用多個對象的變量和方法表的方法,所述的方法包含a.為多個對象中的至少一個在存儲器20中存儲至少一個對象變量;b.在存儲器20中為多個對象存儲至少一個方法表存儲;c.提供第一個專用存儲器121以存儲位于當前使用至少一個對象變量和至少一張方法表的存儲器中的指針;d.提供第二個專用存儲器122以存儲位于以前使用至少一個對象變量和至少一張方法表的存儲器中的指針。
2.如權(quán)利要求1的方法,其中第一個和第二個專用存儲器包含相應的第一和第二組專用寄存器。
3.如權(quán)利要求2的方法,其中第一和第二組專用寄存器分別包含一個當前的程序計數(shù)器寄存器PC和一個以前的程序計數(shù)器寄存器PPC。
4.如權(quán)利要求1的方法,其中處理器利用存儲在第一個專用存儲器中的指針將由所述的指針確定的一個方法表的至少是組成部分讀高速緩沖存儲器。
5.如權(quán)利要求4的方法,其中處理器利用存儲在第一個專用存儲器中的指針將由所述的指針確定的對象變量的至少是組成部分讀高速緩沖存儲器。
6.如權(quán)利要求1的方法,其中方法表指針存儲在預先確定的位置。
7.如權(quán)利要求6的方法,其中將預先確定好的位置連接到相關(guān)的對象變量的位置。
8.如權(quán)利要求1的方法,其中表示存儲信息所需的空間的大小數(shù)據(jù)存儲在存儲器單元上,該信息包含相應對象的任何對象變量和方法表,該存儲器單元則存儲與所述的相應對象有關(guān)的信息的存儲單元連接,處理器利用所述的大小數(shù)據(jù)將所述的信息存儲在快速訪問的存儲器里。
9.如權(quán)利要求8的方法,其中快速訪問存儲器包含一個高速緩沖存儲器。
10.如權(quán)利要求8的方法,其中大小數(shù)據(jù)存儲在從存儲相應對象的方法表的單元開始改址的存儲單元里。
11.如權(quán)利要求1的方法,其中表示存儲信息所需空間的大小數(shù)據(jù)與所述的信息存儲在存儲器里,該信息定義由至少一個方法表確定的方法,所述的處理器利用所述的大小數(shù)據(jù)將所述的信息存儲在快速訪問的存儲器里。
12.如權(quán)利要求1的方法,其中處理器停止執(zhí)行第一種方法,為此將相應對象變量和方法表指針盛裝在第一個專用存儲器中通過以下步驟執(zhí)行第二種方法a將來自第一個專用存儲器讀所述指針至第二個專用存儲器;b開始執(zhí)行第二種方法。
13.如權(quán)利要求12的方法,其中,停止執(zhí)行第二種方法后,處理器通過從第二個專用存儲器讀所述的指針至第一個專用存儲器重新開始執(zhí)行第一種方法。
14.如權(quán)利要求12的方法,其中從第一個專用存儲器讀所述指針至第二個專用存儲器后,處理器為第二種方法將來自各個存儲單元的對象變量指針和方法表指針讀第一個專用存儲器。
15.如權(quán)利要求14的方法,其中停止執(zhí)行第二種方法后,處理器通過從第二個專用存儲器讀所述指針至第一個專用存儲器重新開始執(zhí)行第一種方法。
16.如權(quán)利要求1的方法,其中處理器停止執(zhí)行第一種方法,為此將相應對象變量和方法表指針裝入第一個專用存儲器;通過以下步驟執(zhí)行第二種方法a從第一個專用存儲器讀指針至第二個專用存儲器;b.從第二個專用存儲器讀所述指針至第三個存儲區(qū);c.開始執(zhí)行第二種方法。
17.如權(quán)利要求16的方法,其中處理器停止執(zhí)行第二種方法后通過從第二個專用存儲器讀所述指針至第一個專用存儲器重新開始執(zhí)行第一種方法。
18.如權(quán)利要求16的方法,其中第三個存儲區(qū)可用指針尋址。
19.如權(quán)利要求18的方法,其中第三個存儲區(qū)包含一個LIFO堆棧。
20.如權(quán)利要求1的方法,其中處理器停止執(zhí)行第一種方法,為此將相應對象變量和方法表指針裝入第一個專用存儲器;通過以下步驟執(zhí)行第二種方法a從第一個專用存儲器讀指針至第二個專用存儲器;b從第二個專用存儲器讀所述指針至第三個存儲區(qū);c為第二種方法從各個存儲器位置讀對象變量指針和方法表指針至第一個專用存儲器;d開始執(zhí)行第二種方法。
21.如權(quán)利要求20的方法,其中處理器停止執(zhí)行第二種方法后通過從第二個專用存儲器讀所述指針至第一個專用存儲器重新開始執(zhí)行第一種方法。
22.如權(quán)利要求20的方法,其中第三個存儲區(qū)可通過指針尋址。
23.如權(quán)利要求22的方法,其中第三個存儲區(qū)包含一個LIFO堆棧。
全文摘要
面向?qū)ο筇幚硗ㄟ^將指針保存到專用寄存器中對象變量和方法表的存儲位置來執(zhí)行。處理器當前和以前操作的指針保存在相應的第一和第二組專用寄存器中。為每個對象、將相應的對象變量存儲在存儲單元上且將對應于相應方法表的指針存儲在距離對象變量的單元編碼的存儲位置上。
文檔編號G06F9/44GK1320239SQ00801392
公開日2001年10月31日 申請日期2000年5月10日 優(yōu)先權(quán)日1999年5月12日
發(fā)明者K·羅斯, W·L·薩維勒 申請人:皇家菲利浦電子有限公司