專利名稱:64k環(huán)境限制下實現(xiàn)大單位結構存取的方法
技術領域:
本發(fā)明是有關于一種數(shù)據(jù)存取的方法,且特別是有關于一種在64k環(huán)境限制下的 數(shù)據(jù)存取的方法。
背景技術:
由于Option R0M(0PR0M)或是DOS作業(yè)環(huán)境是屬于16位的作業(yè)環(huán)境,其作業(yè)空間 的大小為2的16次方個位,即65536位,即64k的長度。由于程序的功能中的變量值多是 存放在堆疊中,但受限于作業(yè)環(huán)境的大小,在此種64k環(huán)境作業(yè)中的程序所存取的數(shù)據(jù)結 構也多限制在64k以內(nèi),以避免因重復堆疊的關系,而導致計算錯誤,使得我們無法取得堆 疊中結構的正確位置。 雖然過去使用者會盡量避免在64k作業(yè)環(huán)境中使用大于64k的數(shù)據(jù)結構,但若是 無可避免的需要在64k的作業(yè)環(huán)境下,如0PR0M或是DOS操作系統(tǒng)中,存取大單位結構(即 長度大于64k的結構)時,傳統(tǒng)的做法多是將此大單位結構存在硬盤之中,當64k作業(yè)環(huán)境 下的程序需要此大單位結構中的某個字段(attribute)時,再去硬盤中存取此字段。
此種將大單位結構存在硬盤中,在需要時才去硬盤中存取的方法,雖可解決堆疊 時計算錯誤的問題,但會花費大量的輸入輸出(input/output ;10)時間,而若是將此大單 位結構直接寫入64k的內(nèi)存中,又會遇到前述的堆疊的問題。 因此,如何節(jié)省在64k作業(yè)環(huán)境下存取大單位結構時所花費的時間,且不因堆疊 而導致計算錯誤的情形,便成為一個相當重要的課題。
發(fā)明內(nèi)容
因此本發(fā)明的目的在于提供一種64k環(huán)境限制下實現(xiàn)大單位結構存取的方法,用 以解決大單位結構存取時所遇到的堆疊問題。 本發(fā)明的另一 目的在于不透過硬盤存放64k作業(yè)環(huán)境中所使用的大單位結構,以 節(jié)省輸入/輸出所耗費的時間。 為了實現(xiàn)上述目的,本發(fā)明提出了一種在64k環(huán)境限制實現(xiàn)大單位結構存取的方 法,其包含改變一大單位結構為多個子結構,其中每一子結構的一長度為小于64k;接著, 利用自我測試內(nèi)存管理器配置一大單位內(nèi)存空間;以及將子結構存放于大單位內(nèi)存空間之 中。 其中改變大單位結構為多個子結構的步驟包含拆解大單位結構為多個子結構,或 是切割大單位結構為子結構。其中自我測試內(nèi)存管理器是在自我測試(POST)情形下配置 出大單位內(nèi)存空間。此大單位內(nèi)存空間較佳地為配置位于1MB以上內(nèi)存空間的大單位內(nèi)存 空間。 本方法還包含分別計算子結構的一起始位置,其包含有記錄大單位內(nèi)存空間的起 始位置與分別記錄子結構的長度。此方法還包含有讀取一指定字段,其中包含計算指定字 段位于其所在的子結構中的一偏移值,疊加指定字段所在的子結構的起始位置與偏移值,
3以得到讀取位置,最后,透過自我測試內(nèi)存管理器讀取此指定字段。 本發(fā)明所提供的在64k環(huán)境限制下實現(xiàn)大單位結構存取的方法,可透過自我測試 內(nèi)存管理器將大單位結構改變?yōu)槎鄠€長度在64k以內(nèi)的子結構,并將這些子結構存放在 1MB以上的內(nèi)存空間之中,以不影響0PR0M程序的運作。并透過特殊的自我測試內(nèi)存管理器 的讀取方法,直接讀取位于1MB以上的內(nèi)存空間中的子結構的字段的值。
為讓本發(fā)明的上述和其它目的、特征、優(yōu)點與實施例能更明顯易懂,所附附圖的詳 細說明如下 圖1A與圖1B是應用本發(fā)明的一種64k環(huán)境限制下實現(xiàn)大單位結構存取的方法第 一實施例的示意圖; 圖2是本發(fā)明的一種64k環(huán)境限制下實現(xiàn)大單位結構存取的方法的第二實施例的
示意圖;
流程圖
圖3是本發(fā)明的一種64k環(huán)境限制下實現(xiàn)大單位結構存取的方法的第三實施例的
圖4為此大單位結構存取時一實施例的示意圖5是本發(fā)明的64k環(huán)境限制下實現(xiàn)大單位結構存取的方法;
圖6為此大單位結構存取時另一實施例的示意圖。
主要組件符號說明
100 :大單位結構
120、120':第二子結構
200 ;大單位結構 220 :第二子結構
310 346 :步驟
410 :第一子結構 430 ;第三子結構
H0、110':第一子結構
130、 130':第三子結構
210 :第一子結構 230 :第三子結構
400 :大單位結構 420 :第二子結構
432 :指定字段
具體實施例方式
以下將以附圖及詳細說明清楚說明本發(fā)明的精神,任何所屬技術領域中具有通常
知識者在了解本發(fā)明的較佳實施例后,當可由本發(fā)明所教示的技術,加以改變及修飾,其并 不脫離本發(fā)明的精神與范圍。 由于大單位結構無法直接地在如0PR0M或是DOS等64k的作業(yè)環(huán)境下進行存取, 因此,本發(fā)明便提出了一種可在64k環(huán)境限制下實現(xiàn)大單位結構存取的方法,其可將此大 單位結構拆解成為多個長度小于64k的子結構,并透過自我測試內(nèi)存管理器(POST memory manager ;PPM)配置出一大單位內(nèi)存空間存放這些子結構,以有效地讀取大單位結構而不 會遇到堆疊的問題。 參照圖1A與圖1B,其是應用本發(fā)明的一種64k環(huán)境限制下實現(xiàn)大單位結構存取的 方法第一實施例的示意圖。圖1A為提供一大單位結構100,本實施例中的大單位結構100 的初始狀態(tài)為由多個子結構110、120、130所組合而成,其中第一子結構110中包含有第二子結構120,而第二子結構120中又包含有第三子結構130,因此,使得大單位結構100在宣 告時的長度極大,而無法在64k作業(yè)環(huán)境下直接存取。 圖lB中,本發(fā)明的在64k環(huán)境限制下實現(xiàn)大單位結構存取的方法可對此大單位結 構100進行拆解,以在宣告時將大單位結構100拆解為多個子結構。其中,第三子結構130' 被獨立拆解出來,拆解后的第二子結構120,已經(jīng)不包含第三子結構130'。同樣地,拆解后 的第一子結構110'也不包含第二子結構120'。如此一來,程序可分別對拆解之后的第一子 結構110'、第二子結構120'、與第三子結構130'進行宣告。 其中,拆解后的第一子結構110'、第二子結構120'、與第三子結構130'的長度大 小較佳地為在拆解之后均小于64k,以符合在64k環(huán)境限制中的堆疊的規(guī)定,使第一子結構 110'、第二子結構120'、與第三子結構130'可存放在64k的作業(yè)環(huán)境之中。若是第一子結 構110'、第二子結構120'、與第三子結構130'在拆解后的大小仍大于64k,則可透過本發(fā)明 的第二實施例,將其長度進一步地限制在64k之中。 參照圖2,其是本發(fā)明的一種64k環(huán)境限制下實現(xiàn)大單位結構存取的方法的第二 實施例的示意圖。本實施例為將大單位結構200切割為多個子結構210、220、230,其中每一 個子結構210、220、230在切割的長度均小于64k,使這些子結構210、220、230可存放在64k 的作業(yè)環(huán)境的下。 透過前述兩個實施例的應用,不論是僅用其中之一或是透過兩者的搭配,本發(fā)明 的64k環(huán)境限制下實現(xiàn)大單位結構存取的方法可將原本的大單位結構改變?yōu)槎鄠€長度在 64k之內(nèi)的子結構,使這些子結構可直接地存放在64k的作業(yè)環(huán)境之中,而不會遇到堆疊的 問題。 參照圖3,其是本發(fā)明的一種64k環(huán)境限制下實現(xiàn)大單位結構存取的方法的第三 實施例的流程圖。本實施例中,步驟310為改變大單位結構為多個子結構,其中每一個子 結構的長度均為小于64k。接著,步驟320為利用一自我測試內(nèi)存管理器(POST memory manager ;PPM)配置一大單位內(nèi)存空間,接著,步驟330為將這些長度小于64k的子結構存 放在此大單位內(nèi)存空間之中。 步驟310中所述的改變大單位結構為多個子結構的長度在64k以內(nèi)的子結構,或 是如第二實施例中所述的將大單位結構切割為多個長度在64k以內(nèi)的子結構,又或者可結 合第一實施例與第二實施例,將大單位結構經(jīng)過拆解與切割后,變成多個長度在64k的內(nèi) 的子結構。 步驟320中,自我測試內(nèi)存管理器(PPM)是在自我測試(power on self test ; POST)的情形下,特別是在big real mode的模式下,配置出此大單位內(nèi)存空間。此大單位 內(nèi)存空間較佳地為位于1MB以上的內(nèi)存空間。而OPROM在一般進行自我測試的程序在執(zhí)行 時多是位于1MB以下的內(nèi)存空間,因此,此大單位結構所存放的位置不會占用OPROM程序在 執(zhí)行時所處在的1MB以下內(nèi)存空間。 步驟330中,還包含回傳所分配的內(nèi)存的起始位置,并據(jù)此計算每一個子結構的 起始位置。如圖4所示的此大單位結構存取時的示意圖。此大單位結構400可轉換為多個 子結構410、420、430,這些子結構410、420、430為透過自我測試內(nèi)存管理器(P匪)存放在 1MB以上的內(nèi)存空間。其中,大單位結構400所存放的大單位內(nèi)存空間的起始位置即為第一 子結構410的起始位置,而第二子結構420的起始位置即為第一子結構410的起始位置加上第一子結構410的大小,而第三子結構430的起始位置則為第二子結構420的起始位置 加上第二子結構420的大小。 參照圖5,其是本發(fā)明的64k環(huán)境限制下實現(xiàn)大單位結構存取的方法,其中還包含 步驟340的讀取一指定字段。同時參照圖6,假設本次讀取的指定字段432為位于第三子結 構430之中,步驟342則包含有計算此指定字段432位于第三子結構430中的一偏移值,接 著,步驟344為疊加第三子結構430的起始位置與此偏移值,即第一子結構410的起始位置 加上第一子結構410的大小,再加上第二子結構420的大小,再加上偏移值,以得到指定字 段432 —讀取位置。最后,步驟346為根據(jù)此讀取位置讀取指定字段432中的數(shù)據(jù)。
由上述本發(fā)明較佳實施例可知,應用本發(fā)明具有下列優(yōu)點。本發(fā)明所提供的在64k
環(huán)境限制下實現(xiàn)大單位結構存取的方法,可透過自我測試內(nèi)存管理器將大單位結構改變?yōu)?多個長度在64k以內(nèi)的子結構,并將這些子結構存放在1MB以上的內(nèi)存空間之中,以不影響 0PR0M程序的運作。并透過特殊的自我測試內(nèi)存管理器的讀取方法,直接讀取位于1MB以上 的內(nèi)存空間中的子結構的字段的值。 雖然本發(fā)明已以一較佳實施例揭露如上,然其并非用以限定本發(fā)明,任何熟悉此 技術的人員,在不脫離本發(fā)明的精神和范圍內(nèi),當可作各種的更動與潤飾,因此本發(fā)明的保 護范圍當視后附的權利要求書所界定的范圍為準。
權利要求
一種64k環(huán)境限制下實現(xiàn)大單位結構存取的方法,其特征在于,包含改變一大單位結構為多個子結構,其中每一子結構的一長度為小于64k;利用一自我測試內(nèi)存管理器配置一大單位內(nèi)存空間;以及將該多個子結構存放于該大單位內(nèi)存空間。
2. 根據(jù)權利要求1所述的64k環(huán)境限制下實現(xiàn)大單位結構存取的方法,其特征在于,改 變一大單位結構為多個子結構的步驟包含拆解該大單位結構為該多個子結構。
3. 根據(jù)權利要求l所述的64k環(huán)境限制下實現(xiàn)大單位結構存取的方法,其特征在于,改 變一大單位結構為多個子結構的步驟包含切割該大單位結構為該多個子結構。
4. 根據(jù)權利要求l所述的64k環(huán)境限制下實現(xiàn)大單位結構存取的方法,其特征在于,該 自我測試內(nèi)存管理器是在一自我測試情形下配置出該大單位內(nèi)存空間。
5. 根據(jù)權利要求l所述的64k環(huán)境限制下實現(xiàn)大單位結構存取的方法,其特征在于,配 置一大單位內(nèi)存空間的步驟包含利用該自我測試內(nèi)存管理器配置位于1MB以上內(nèi)存空間 的該大單位內(nèi)存空間。
6. 根據(jù)權利要求l所述的64k環(huán)境限制下實現(xiàn)大單位結構存取的方法,其特征在于,還包含分別計算該多個子結構的一起始位置。
7. 根據(jù)權利要求6所述的64k環(huán)境限制下實現(xiàn)大單位結構存取的方法,其特征在于,包 含記錄該大單位內(nèi)存空間的一起始位置與分別記錄該多個子結構的一長度。
8. 根據(jù)權利要求1所述的64k環(huán)境限制下實現(xiàn)大單位結構存取的方法,其特征在于,還包含讀取一指定字段。
9. 根據(jù)權利要求8所述的64k環(huán)境限制下實現(xiàn)大單位結構存取的方法,其特征在于,還包含計算該指定字段位于其所在的該子結構中的一偏移值。
10. 根據(jù)權利要求9所述的64k環(huán)境限制實現(xiàn)大單位結構存取的方法,其特征在于,還包含疊加該指定字段所在的該子結構的一起始位置與該偏移值,以得到一讀取位置。
全文摘要
本發(fā)明涉及一種在64k環(huán)境限制實現(xiàn)大單位結構存取的方法,其包含改變一大單位結構為多個子結構,其中每一子結構的一長度為小于64k;接著,利用自我測試內(nèi)存管理器配置一大單位內(nèi)存空間;以及將多個子結構存放于大單位內(nèi)存空間之中,特別是位于1MB以上的內(nèi)存空間。
文檔編號G06F9/34GK101739240SQ200810179120
公開日2010年6月16日 申請日期2008年11月25日 優(yōu)先權日2008年11月25日
發(fā)明者陳重江 申請人:英業(yè)達股份有限公司