TW200813838A - Method and apparatus for handling exceptions during binding to native code - Google Patents
Method and apparatus for handling exceptions during binding to native code Download PDFInfo
- Publication number
- TW200813838A TW200813838A TW096122074A TW96122074A TW200813838A TW 200813838 A TW200813838 A TW 200813838A TW 096122074 A TW096122074 A TW 096122074A TW 96122074 A TW96122074 A TW 96122074A TW 200813838 A TW200813838 A TW 200813838A
- Authority
- TW
- Taiwan
- Prior art keywords
- target
- subject
- state
- code
- topic
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45516—Runtime code conversion or optimisation
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/481—Exception handling
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
- Debugging And Monitoring (AREA)
Description
200813838 九、發明說明 【發明所屬之技術領域】 本發明大體上關於電腦及電腦系統的範疇,較具體的 關於異常信號的處置。 【先前技術】 中央處理單元(CPU)或處理器位於所有現代計算系 統的中心。該處理器執行電腦程式的指令,並因而啓動電 腦實施有用的工作。CPU在現代的生活中以數位裝置的所 有形式普遍存在,而非僅專用於例如個人電腦、膝上型電 腦或PDA之計算機器。微處理器出現在從汽車、行動電 話到兒童玩具的每一項物件中。 因爲每一類處理器具有其本身獨特的指令集架構( ISA),所以通常僅可由一類處理器執行而不可由任何其 他類處理器執行的程式碼中產生了一個問題。因而,程式 碼轉換已發展出自動將一類處理器所寫入的程式碼轉換爲 可由另一類處理器執行的碼,或使舊的、效能差的碼完美 地成爲相同類型處理器的較新、較快速版本。即,在嵌入 及非嵌入CPU中,存在主要的ISA,其已存在大篇幅的軟 體而可"加速"性能或”翻譯"爲呈現較佳成本/性能優勢的 其他處理器。亦發現大多數的CPU架構及時鎖住其ISA 且無法發展性能或市場版圖。此問題存在於各級的計算產 業,從獨立的口袋型計算裝置到具有數十或數百強力伺服 器的大規模網路。 -5- 200813838 一 關於程式碼轉換範疇的背景資訊,PCT刊物W02000 , / 2252 1標題”程式碼轉換"、W02004/ 095264標題"程式 碼轉換期間實施解譯器最佳化的方法及設備"、W02004/ 09763 1標題”產生程式碼轉換之中間展示的改進架構"、 W02005/ 0G6106標題"實施可調整精度異常處置的方法及 設備"及W02006/ 1 03395標題”程式碼轉換期間異常之精 密處置的方法及設備”,均以參考的方式倂入本文,並揭 ϋ 露有利於程式碼轉換性能之方法及設備,而可用于文中所 討論的示範實施例中。 一個特定的問題領域係關於異常信號的處置。異常爲 一種狀況,改變程式中正常的控制流。異常信號顯示一種 系統內發生的狀況,需要處理器留意且通常需於可繼續處 理前處置。異常可細分爲許多不同類型,例如中斷、故障 、陷阱或異常中止。該術語於不同架構之間改變,且特定 類型或種類的異常可專爲特定架構獨有。 • 異常信號(通常簡稱爲”信號”或”異常”)可由硬體或 軟體產生。硬體異常信號包括重置、中斷或來自記憶體管 理單元的信號。例如,異常可由數字錯誤之算術邏輯單元 或浮點單元產生,例如除以0,溢流或下溢,或例如特權 的、保留的、陷阱或未定義指令之指令解碼錯誤。軟體異 常變化極大,貫穿各種不同的軟體程式,但一般適用於任 一類的錯誤檢查,其改變程式的正常行爲。 信號處置器爲一特殊單元,其係於程式的執行期間發 生異常信號時被呼叫。該信號處置器接著試圖處理產生異 -6- 200813838 常的情況,且若可能則繼續程式的執行。若程式未提供特 定信號的信號處置器,那麼便將呼叫預設系統信號處置器 〇 觸發異常信號的大部分共同事件爲當程序試圖(i) 存取未對映的記憶體區或(ii)操作不具正確權限的記憶 體區。觸發異常信號的其他共同事件爲(iii )收到從另一 程序發送的信號,(iv )不具執行之特權位階的目前程序 之指令的執行,或(v )硬體中輸入/輸出事件。 一些代表性異常信號於表1中描述。從計算系統的.透 視圖,每一類信號具有一相應信號編號,其通常爲整數編 號#1、#2、#3等。而且,如該表中所示,每一信號共同具 有顯著的符號名稱。
200813838 信號編號 信號. 描述 #1 SIGHUP "突停"-通常用於表示組態已改變的程序,其將重新讀取其 組態檔案。 #2 SIGINT π中斷"-通常表示使用者已按下Ctrl-C 〇 #3 SIGILL ”不合法指令”-當遇到個別指令作業碼時,處理器便產生該 信號。 #4 SIGTRAP ’’中斷點通常爲除錯器使用。 #5 SIGBUS ”匯流排錯誤”-通常由處理器產生以表示無效的記憶體存取 〇此通常爲對於未配置或未校準記憶體位址的存取。 #6 SIGSEGV ”分段違反”-當使用者處理試圖以使用者模式進行未許可的 事件時由處理器產生。例如,嘗試執行特權的指令,或嘗試 寫入至核心記憶體部分均將引起該信號。 #7 SIGALRM ’’警報時脈"-可製造警報0系統呼叫的程序,其要求該信號η 餘數秒之後實施傳遞。 #8 SIGTERM ”終止禮貌的要求程式若不致太不便便考量退出。 #9 SIGQUIT ”退出堅定地要求程式現在退出。 #10 SIGKILL ”立即停止”-立即終止此程序。本信號無法被信號處置器攔 截。 表1 :示範異常信號 異常信號可來自兩個來源:(1 )直接來自執行程式 或(2 )來自作業系統或其他程序。一些異常信號係產生 做爲程式所執行之指令的直接結果。例如,若程式執行不 合法作業碼,那麼便產生SIGILL。同樣地,若程式試圖 不合法記憶體存取,那麼便產生SIGSEGV。其稱爲帶內信 號。異常信號亦可由外部產生,或藉作業系統或其他程序 產生。SIGHUP及SIGALRM爲其範例。該些外部產生的 異常信號稱爲帶外信號。 從程式的觀點,異常信號可於任何時間發生。當異常 -8- 200813838 信號發生時,作業系統便中斷發信號程式的執行並引動信 號處置器。作業系統通常定義所有異常的預設信號處置器 ’該些異常藉預設而接收異常信號,並採取預先定義的動 作或僅忽略該信號。然而,作業系統維持程序特定處置表 ,其對映每一類型信號至註冊的信號處置器。例如,在 Unix中,程式可藉引動信號動作()系統呼叫而置換預設信 號處置器。當接收到特定異常信號時,信號動作()允許程 式指明作業系統應採取之動作。該動作可爲:(1 )忽略 該異常信號;(2)呼叫預設信號處置器;或(3)呼叫專 門的信號處置器功能,其位址係由程式提供。當實施信號 動作()呼叫時,可指定的其他選擇包括於信號處置器之執 行時封鎖其他信號,在大部分與CPU相同的方式中可遮 蔽某些中斷。
Unix信號處置器典型地提供二種原型之一。第一信號 處置器原型"void sigHandler ( int sigNum) ”。第一項參數 爲異常信號的編號,使得一功能可註冊而處置多個信號。 程式可要求藉呼叫具SA_SIGINFO旗標的信號動作()而提 供更多資訊予信號處置器。在此狀況下,Unix信號處置器 原型成爲丨’void sigHandler ( int sigNum, siginfo —t siglnfo, void*上下文)”。 第二項參數("siginfo”)爲一結構,其包含有關信號 的資訊,包括孰引發信號及源自何處的一些指示。例如’ 在SIGILL信號的狀況下,siginfo結構包含不合法指令。 該資料對於允許程序適當地處置該信號可爲必要的。第三 -9- 200813838 項參數(”上下文”)提供該信號產生時對於處理器狀態( 包括所有暫存器)的存取。再次地,該資料對於允許信號 的正確處置可爲必要的。信號處置器獲許可修改內容,且 當執行恢復時,暫存器接著復原修改之內容的値。 當原始程式碼(此處稱爲”主題碼”)已依據特定類型 的處理器("主題處理器”)寫入,主題碼便要求特定類型 的執行環境,且需由用於異常信號之處置的適當機構提供 。然而,在程式碼轉換下,主題碼被替代轉換爲目標碼, 並於目標計算系統上執行。當異常產生時,目前在提供適 當的機構以處置該異常信號方面有困難。 在程式碼轉換的領域中,顯然當於目標處理器上執行 指令並引發將報導的異常信號時,該指令通常將無法實施 向寫入主題碼的信號處置器報導異常的狀況。首先由於主 題碼寫入之主題處理器的指令集與其上執行目標碼之目標 處理器之間的差異,其次由於典型上發生於程式碼轉換期 間的最佳化,指令幾乎總是以不同於相應主題碼區塊中指 令之順序的順序於目標處理器上實施。因而,極易提供目 標狀態予信號處置器,但不易且昂貴地獲得代表原始主題 碼之執行中相同時點的精確主題狀態。 許多工作的主題程式中產生進一步的複雜性,包含多 個主題碼的單元。單一主題程式可包括可執行的主要主題 ,且亦利用多個主題庫,其中一些可爲私有的,及其中一 些典型地將提供做爲主題作業系統的一部分。關於主題程 式執行,當函數呼叫針對主題庫內某些函數實施時,控制 -10- 200813838 流於主題碼的該些不同單元之間傳遞。 以參考的方式倂入本文之PCT申請案 W02005 / 008478 (亦公布爲US2005/0015781A),揭露於主題碼 翻譯爲目標碼期間插入對定義明確的本機碼部分之呼叫的 本機連結技術,特別是本機函數’使得主題程式中對主題 碼函數的函數呼叫,替代爲對相同函數之本機等效物件的 目標碼呼叫。此避免翻譯該些函數的主題版本爲目標碼的 管理負擔。此外,由於主機版本可較佳地利用不會出現在 主題架構之目標架構的架構特徵,該主機版本可爲相同函 數之更有效率的實施。 本機連結技術非常有用,因爲本機碼被寫入或直接編 譯至目標處理器,因而極有效率地在該目標處理器上執行 。然而,本機碼-例如同屬庫函數-通常不維持翻譯程序中 的管理負擔,例如維持精確的主題狀態的工作。即,本機 碼快速但一般不實施與翻譯程序相關的有用工作,其通常 由翻譯器所產生的目標碼進行,例如維持精確的主題狀態 而向主題異常處置器報告。 此外,發明者已發現處置異常之後有關恢復主題程式 之執行的困難,特別是其需要恢復本機碼的執行。 【發明內容】 依據本發明,如申請專利範圍所提出的提供設備及方 法。經由所屬申請專利範圍,本發明的選擇特徵將顯而易 見,且描述如下。 11 - 200813838 下列爲依據本發明之實施例而可體現之各式觀點及優 點的總結。其提供介紹以協助本技藝中技術純熟人士更快 速理解接著的詳細設計討論,且不希望以任何方式限制申 請專利的範圍。 在本發明的一個觀點中,提供一種計算系統,包含一 (第一型)目標處理器,及一記憶體單元,其配置以儲存 可由該目標處理器執行的本機碼部分及可於包括一(第二 型)主題處理器之主題計算架構上執行的複數主題碼部分 。而且,該計算系統包含一翻譯器單元,其配置以轉換至 少一些該複數主題碼部分爲目標碼,並控制該目標處理器 上該目標碼的執行,包括連結至少一該主題碼部分至該本 機碼部分,及引動該目標處理器上該本機碼部分的執行, 而替代轉換該至少一主題碼部分爲目標碼。此外,一異常 處置器單元,其配置以回應於該目標處理器上該本機碼部 分之執行期間產生的異常信號,其係藉(i)將目標狀態 資料結構儲存於該記憶體單元中,其包含代表該目標處理 器中相對於該本機碼部分之執行的目前時點的目標狀態, 及(ii )於該記憶體單元中產生主題狀態資料結構,其包 含代表該主題計算架構上執行之仿真時點的主題狀態。一 主題異常處置器單元,其配置以處置該記憶體單元中參考 該主題狀態資料結構中所提供該主題狀態的該異常信號。 一恢復單元,其配置以於該異常信號經該主題異常處置器 單元處置之後恢復執行,其係藉使用該主題狀態資料結構 而從該記憶體單元中該目標狀態資料結構,復原該目標狀 -12- 200813838 態至該目標處理器中,並接著依據該目標狀態使該目標處 理器恢復該本機碼部分的執行。 在本發明的另一個觀點中,提供在程式碼從主題計算 架構可執行的主題碼轉換爲目標計算架構可執行的目標碼 下,主機連結期間異常的處置方法。實施主機連結執行本 機碼部分,通常取代翻譯主題碼部分爲目標碼。當於主機 界限碼的執行期間發生異常時,該方法包含儲存代表本機 界限碼之目標計算架構中執行的目前時點的目標狀態,提 供主題狀態,及參考該主題狀態而處置該異常,使得在使 用該主題狀態而從該異常恢復執行時,便復原儲存的目標 狀態以恢復本機界限碼的執行。 在示範實施例中,主題狀態代表主題計算架構中執行 的時點,其係由目標計算平台仿真。特別是主題狀態可包 括用於仿真主題架構之程序堆疊(或控制堆疊)之目標計 算平台的記憶體中主題堆疊資料結構的堆疊指標。方便地 ,目標狀態係儲存至主題堆疊,使得主題堆疊指標鏈結至 儲存的目標狀態。此外’在示範實施例中,本機界限碼的 執行使用主題堆疊。在進一步,在示範實施例中,主題狀 態包括修改的程式計數器,其用於當從處置異常返回時重 定向執行控制。在一些實施例中,實施從主題狀態鏈結至 儲存的目標狀態的恢復常式。 示範實施例係指向實施程式碼轉換的計算系統,且在 與fc供主逼程式碼動態二元翻譯爲目標碼之執行時間翻譯 器連接中特別有用。 -13- 200813838 本發明亦延伸至翻譯器設備,其配置以實施文中所討 論之本發明的實施例。而且,本發明延伸至具有記錄於其 上之指令的電腦可讀取儲存媒體,該指令可由電腦完成以 實施文中所定義的任一方法。 至少一些本發明的實施例可部分或全部使用專用硬體 而加以建構。例如’示範實施例的計算系統包含特定函數 專用翻譯器單元。文中所使用的例如,模組’或’單元,之術語 可包括但不限於硬體裝置,例如實施某些工作的場可程控 閘極陣列(FPGA)或特定函數積體電路(ASIC)。 另一方面,本發明的元件可裝配而駐於可尋址儲存媒 體上,及可裝配而於一或更多處理器上執行。因而,一些 實施例中本發明的函數元件經由範例包括軟體組件、物件 導向軟體組件、分類組件及工作組件之組件、處理、函數 、屬性、程序、次常式、程式碼段、驅動器、韌體、微碼 、電路、資料、資料庫、資料結構、表、陣列及變數。此 外,儘管已參考下列討論的組件、模組及單元描述較佳實 施例,該函數元件可由更少的元件組合或劃分爲其餘元件 【實施方式】 下列描述係提供用以啓動本技藝中技術純熟人士去製 造及使用本發明並提出實現其發明之該發明者所考量的最 佳模式。然而,由於本發明的一般原理已於文中定義,各 式修改將輕易地保持對於熟悉本技藝之人士顯而易見。 -14- 200813838 圖1提供系統及環境槪觀,其中本發明的示範實施例 可提供應用,以便介紹將在下列更詳細討論的單元、組件 及元件。參照圖1,希望於具有至少一主題處理器3的主 題計算平台1上執行主題程式17。然而,希望經由實施程 式碼轉換的翻譯器單元19而使用目標計算平台10執行該 主題程式17。該翻譯器單元19實施碼轉換,從該主題碼 1 7至目標碼2 1,使得該目標碼21可於該目標計算平台1 〇 上執行。 如同本技藝中技術純熟人士將熟悉的,該主題處理器 3具有一套主題暫存器5。尤其主題記憶體8保持該主題 碼1 7及主題作業系統2。同樣地,圖1中該示範目標計算 平台10包含具複數目標暫存器15的目標處理器13,及記 憶體1 8以儲存複數作業組件,包括目標作業系統20、該 主題碼17、該翻譯器碼19及該翻譯的B標碼21。該目標 計算平台1 0典型地爲以微處理器爲主的電腦或其他合適 的電腦。 在一實施例中,該翻譯器碼1 9爲一最佳化或非最佳 化仿真器,將主題指令集架構(ISA )的主題碼翻譯爲另 —ISA的翻譯的目標碼。在另一實施例中,該翻譯器19 功能如一加速器’藉實施程式碼最佳化而將相同I S A的主 題碼翻譯爲目標碼。 該翻譯器碼19爲完成翻譯器之來源碼的適當編譯版 本,並與該目標處理器1 3上該作業系統20相結合地執行 。將理解的是圖1中所描繪的結構僅爲範例’例如本發明 -15- 200813838 的實施例可於目標平台之該作業系統20之內或之下實施 。如本技藝中技術純熟人士所知的,該主題碼1 7、翻譯器 碼19、作業系統20及該記憶體18的儲存機構可爲廣泛的 類型。 在依據圖1的示範設備中,程式碼轉換係以執行時間 而動態實施,以於該目標碼21執行時在該目標架構1 0上 執行。即,該翻譯器19與該翻譯的目標碼21內聯執行。 經由該翻譯器1 9執行該主題程式1 7包括不同兩類以交插 方式執行的碼:該翻譯器碼19;及該目標碼21。因而, 該目標碼21係由該翻譯器碼19在整個執行時間依據被翻 譯之程式的該儲存的主題碼17而產生。 在一實施例中,當實際執行該主題程式1 7做爲該目 標處理器1 3上目標碼21時,該翻譯器單元1 9仿真該主 題架構1的相關部分,例如該主題處理器3及特別是該主 題暫存器5。在較佳實施例中,提供至少一整體暫存器記 億體27 (亦稱爲主題暫存器庫27或摘要暫存器庫27 )。 在多處理器環境中,依據主題處理器的架構選擇地提供一 個以上的摘要暫存器庫27。主題狀態的展示係由該翻譯器 1 9及該目標碼2 1的組件提供。即,該翻譯器1 9以各式明 確的程式設計語言裝置儲存該主題狀態,例如變數及/或 物件。經由比較,該翻譯的目標碼2 1暗示地於該目標暫 存器1 5及記憶體位置1 8中提供主題處理器狀態,其係由 該目標碼21的目標指令操作。例如,該整體暫存器記憶 體27的低階展示僅爲配置的記憶體區。然而,在該翻譯 -16 - 200813838 器1 9的來源碼中,該整體暫存器記憶體27爲一資料陣列 或可以較高階存取及操作的物件。 本技藝中技術純熟人士將熟悉術語"基本區塊"。基本 區塊爲一具有精確進入時點及精確輸出時點的碼段,其限 制該區塊碼爲單一控制路徑。爲此原因,基本區塊爲有用 的控制流程的基本單元。適當地,該翻譯器1 9將該主題 碼17劃分爲複數個基本區塊,其中每一基本區塊爲單一 進入時點之第一指令與單一輸出時點之最後指令(例如跳 躍、呼叫或分支指令)之間的連續指令集。該翻譯器19 可僅選擇該些基本區塊之一(區塊模式)或選擇一組基本 區塊(組區塊模式)。一組區塊適當地包含二或更多基本 區塊,其將如單一單元般一同處理。此外,該翻譯器可形 成代表主題碼之相同基本區塊但在不同進入狀況下的類似 區塊。 在較佳實施例中,依據主題指令順序產生中階展示( )的樹狀結構,做爲從該原始主題程式1 7產生該目標 碼21的部分程序。IR樹狀結構爲主題程式所計算表示及 實施作業之摘要展示。之後,依據IR樹狀結構產生該目 標碼21。IR節點的彙整爲實際指向非週期圖(DAG), 但通俗地稱爲”樹狀結構”。 如本技藝中技術純熟人士可理解的,在一實施例中該 翻譯器1 9係使用例如C + +之物件導向程式設計語言而完 成。例如,IR節點完成爲C + +物件,且論及其他節點係完 成爲參考相應於其他節點之C + +物件的C + +。IR樹狀結構 -17- 200813838 因而完成爲IR節點物件的彙整,包含彼此的各項參考。 此外,在討論下的該實施例中,IR產生使用一套摘要 暫存器定義,其相應於希望執行該主題程式17之主題架 構的特定特徵。例如,對主題架構上每一實體暫存器而言 存在獨特的摘要暫存器定義(即圖1的該主題暫存器5) 。翻譯器中摘要暫存器定義本身可完成爲C + +物件,其包 含對於IR節點物件的參考(即IR樹狀結構)。該套摘要 暫存器定義所指所有IR樹狀結構的聚合稱爲工作IR森林 (”森林"係因爲其包含多個摘要暫存器根,其中每一均指 一 IR樹狀結構)。該些IR樹狀結構及其他程序適當地形 成部分的該翻譯器1 9。 圖1進一步顯示該目標架構1 0之該記憶體1 8中本機 碼28。該目標碼2 1之間存在一區別,其導致於該主題碼 1 7的執行時間翻譯,及該本機碼28,其被寫入或直接編 譯用於該目標架構。本機碼2 8產生於該翻譯器1 9外部, 意即該翻譯器1 9未動態地產生該本機碼28,且該翻譯器 1 9有機會修改或使該本機碼2 8最佳化。 圖2爲一較詳細的槪圖,描繪用於本發明之實施例中 本機連結機構。 本機連結係藉該翻譯器1 9而完成,當其檢測主題程 式的控制流進入主題碼1 7的段時,例如主題庫,該主題 碼的本機版本存在。除了翻譯該主題碼外,該翻譯器19 替代地使該等效本機碼28於該目標處理器1 3上執行。在 示範實施例中,如上述所參考之 WO20 05 / 008478 (及 -18- 200813838 US2005 /〇〇i 5 78 1 A)中更詳細討論的,該翻譯器19使用 已定義的介面連結所產生的目標碼21至該本機碼28,例 如本機碼或目標碼呼叫存根。 該主題程式17通常包括一或多個主題可執行檔案17a ,其被翻譯爲目標碼21a。該主題可執行檔案17a可依序 參考及利用多個包括專有庫及/或系統庫的主題庫。描繪 兩示範庫函數17b、17c。該翻譯器19使用本機連結而以 對於該本機碼2 8中所提供本機庫中等效函數的呼叫,取 代對某些主題庫函數的呼叫。在此範例中,該翻譯器19 翻譯第一庫函數A爲目標碼21b,其中第二庫函數B爲本 機碼28中本機庫函數的本機界限。該些本機庫典型地爲 該目標作業系統20部分,但亦可伴隨該翻譯器1 9而提供 與目標系統。 如所描述的範例,配置該翻譯器19以實施MIPS至 x86的翻譯。此處’該χ86目標系統庫”libc"定義先進的本 機memcpyO (記憶體複製)常式,其利用SSE2向量作業 以實施極快的位元組複製。使用本機連結呼叫MIPS主題 碼中主題memcpy函數,爲本機merncpy()的界限。此排除 該memcpyO函數之翻譯該主題(MIPS)版本的成本。此 外,該memcpy()的本機.(χ86 )版本適於本機硬體的錯綜 複雜事物,並可達成該硬體的最有效率方式中該函數的所 需效果。 本機連結主要適於庫函數,但亦可完成任何定義明確 的主題碼段’基此目標架構中可獲得本機碼等效。即,除 -19- 200813838 了目標系統庫呼叫外,本機連結可用於更任意碼替代,例 如替代非庫函數的本機編譯版本。此外,本機連結可用於 在本機架構上完成主題系統呼叫,其係藉完成與對於主題 系統函數之呼叫相同的函數,或做爲環繞目標系統呼叫之 呼叫存根的替代本機函數,而取代對於主題系統函數的所 有呼叫。本機連結亦可適於超出函數呼叫網點的任意主題 碼位置,以允許(目標碼或本機碼中)任意碼順序及/或 將插入或替代主題程式中任一定義明確時點的函數呼叫。 圖3爲圖1之該目標計算平台1 〇的較詳細槪圖,顯 示用於有關如本發明之示範實施例所實施異常之處置的組 件。 典型地,提供一或多個主題異常處置器170以處置於 該主題程式1 7之執行期間發生的異常。在程式碼轉換的 上下文中,需要準確地於目標系統上塑造該主題異常處置 器170的行爲。此處,圖3顯示一套主題異常處置器170 ,其可包括特定主題異常處置器,其係專用於特定類型的 異常,及一或多個將使用的預設系統異常處置器,其中特 定異常處置器爲未註冊的。方便地,該主題異常處置器 170存在於目標平台上,做爲該主題碼17的部分。 該翻譯器19亦提供目標碼21中相應的一套翻譯的主 題異常處置器1 70,以於該目標處理器! 3上執行,其仿真 該主題異常處置器170。在特定實施例中,該主題異常處 置器170於需要時動態翻譯爲可執行目標碼版本。將理解 的是參考下列描述中主題異常處置器17〇,包括適當的參 -20- 200813838 考主題異常處置器之翻譯的目標碼版本。 圖4爲一槪圖,顯示當呼叫主題庫函數時,及當處置 該庫函數之執行期間異常時,主題計算平台中執行。 當異常發生時,目前的主題狀態係儲存儲存於預定的 位置(例如堆疊),且執行控制傳遞至適當的主題異常處 置器170。該主題異常處置器170通常將使用儲存的主題 狀態資訊以便處置異常。而且,若異常處置器決定於異常 發生的相同時點或主題程式中一些其他時點,便使用主題 狀態以恢復主題程式的執行。主題異常處置器可做爲處置 異常的一部分,例如藉改變儲存的程式計數器而改變儲存 主題狀態。因而,在程式碼轉換的上下文中,需要準確地 依循該主題異常處置器170之預期的行爲。 如同本技藝中技術純熟人士將熟悉的,在使用用於程 序呼叫之堆疊的架構中,主題堆疊8 1儲存有關已被主題 程式呼叫之作用次常式或庫函數的資訊。通常,該主題堆 疊81係提供於該主題平台1的該記憶體8中,且許多處 理器提供特定硬體以操作記憶體中的該堆疊資料結構。儘 管堆疊亦可用於其他目的,例如傳遞函數參數與結果,及 儲存局部資料,但該堆疊8 1的主要角色係保持時點的追 蹤,基此當每一作用函數完成執行時便將返回。典型地, 每一函數呼叫置放鏈結資訊於堆疊上,包括返回位址。此 類堆疊亦已知爲執行堆疊、控制堆疊或函數堆疊。通常, 一堆疊與每一執行程式或與程序的每一工作相結合。堆疊 的確切內容取決於許多因素包括例如主題硬體、主題作業 -21 - 200813838 系統及主題平台的指令集架構。 在圖4中,主題狀態S包括至少一些主題暫存器之內 容的資訊。特別是,該主題狀態S可包括尤其例如主題堆 疊指標(SP_S )及主題程式計數器(PC_S )之目前値的 資訊。當該呼叫程式主題程式17a呼叫主題庫函數17b時 ,該主題狀態S藉推動主題暫存器的內容至該主題堆疊 81而予儲存,且更新該主題堆疊指標SP_S以指向該主題 堆疊81的頂端。於呼叫的庫函數17b之執行期間,局部 資料可儲存於該主題堆疊81之上,並形成新的主題狀態 S’。當異常發生時,該新的主題狀態S·係儲存於該堆疊81 之上,且執行傳遞至該主題執行處置器170。在處置異常 之後,主題平台將處於第三狀態S ”。在此範例中’該第二 儲存狀態S’於處置異常之後從堆疊恢復,.並於異常發生之 該主題庫函數1 7b中時點恢復執行。之後,當執行從該庫 函數17b返回至該呼叫程式程式17a時該第一儲存狀態S 恢復。 圖5爲一槪圖,顯示當實施本機連結時’及當處置本 機界限碼中異常時,本發明之實施例中所使用之目標計算 平台中的執行狀態。特別是,圖5描繪本發明的一示範實 施例,其允許將向該主題異常處置器170報告的有用的主 題狀態S,,且亦允許執行以於該本機界限碼2 8中恢復。 對文中所討論的程式碼轉換而言,該翻譯器1 9提供 該目標平台10上元件,一般而言與該主題平台1上的元 件功能上等效。在此範例中,該翻譯器1 9提供該目標記 -22- 200813838 憶體1 8中該主題堆疊8〗的展示,並代表使用 器庫27的該主題暫存器5。因而,當該主題碼 主題庫函數17b時及當異常於該主題異常處置 置時,該翻譯器19可仿真圖4中所示的所有 ,當實施本機連結時,該翻譯器1 9不再具有 碼28上密切控制,且該翻譯器19無法保持主 其於主題平台上該主題庫函數〗7c的執行期間 狀態的精準等效。然而,文中所討論的實施例 器19提供該第二主題狀態S,對於該主題異常 的適當等效。此外,文中所討論的實施例允許 異常處置之後返回該本機界限碼28。 在圖5中,該目標平台1 〇具有目標狀態 例如目標程式計數器、目標堆疊指標及該目橒 中該目標暫存器1 5之目前狀態的資訊。最初 態T反映藉該翻譯器丨9而從該呼叫程式主題; 生之目標碼21的執行。如上述,該目標碼21 將提供於目標平台上的主題狀態s。 本機連結技術係用於執行本機碼庫函數B 目標狀Si T於該本機界限碼2 8的執行期間發 標狀態τ’。當異常於該本機界限碼的執行 ’便產生一異常信號(即藉目標作業系統2〇) 冊的異常處置器。關於處置異常的部分,該目^ 儲存至目標系統中的適當儲存位置,在本範例 該主題堆暨81。該第二目標狀態τ,於異常發 該摘要暫存 1 7 a呼叫該 器170中處 結構。然而 該本機界限 題狀態s’, 保持與主題 允許該翻譯 處置器1 7 0 執行控制於 T,其代表 I處理器13 ,該目標狀 g式17a產 的執行引發 ,且該第一 展出第二目 期間發生時 並傳遞至註 票狀態Τ’係 中係儲存至 生時,代表 -23- 200813838 該本機界限碼2 8之該目標處理器1 3中執行的目前時點。 而且,該翻譯器1 9的異常處置器單元1 9 1於執行控制傳 遞至該主題異常處置器17〇之前,製造及儲存主題狀態S' 。該主題執行處置器170被引動以參考該製造的主題狀態 S,而處置異常。此處,該第二主題狀態Y包含至少該儲存 的目標狀態T,上指向該主題堆疊81的主題堆疊指標( SP_S )。方便地,該先前儲存的主題狀態S被用做該第二 主題狀態S ’的基本,藉修改而包括所需的該主題堆疊指標 (SP_S)的新値。 該主題異常處置器170的執行產生第三主題狀態S”及 第三目標狀態T”(由於目標平台上所進行的工作以處置異 常)。然而,該主題異常處置器170現在可參照該儲存的 主題狀態S·以便於異常發生的時點恢復該本機界限碼28 中執行。即,該儲存的主題狀態S’擁有該儲存的目標狀態 T,且處於該儲存的主題狀態S ’之主題碼的恢復執行恢復 該本機界限碼28的執行。 這是有助益的請注意,在所描繪的實施例中,該第一 及第三目標狀態T及T”參照藉該翻譯器1 9而從相關主題 碼17產生之該目標碼21的執行。在本實施例中,該目標 碼2 1的執行使用分別來自該主題堆疊81而亦提供於目標 平台之記憶體中的目標堆疊(未顯示)。相對地,該第二 目標狀態Τ’參照使用該主題堆疊81之該本機碼281的執 行。因而,顯示該第二目標狀態Τ’以包括指向該主題堆疊 81之堆疊指標(此處以箭頭描繪),同時該第一及第三目 -24- 200813838 標狀態則否。 如圖5中所示,本發明的示範實施例使用該主題堆疊 81用於該本機界限碼28的執行。如上述,該主題堆疊81 爲該記憶體1 8的配賦區域,其中該翻譯器1 9代表該主題 碼17管理,做爲主題碼翻譯爲目標碼的部分。使用該主 題堆疊81用於該本機碼28的執行,避免本機界限碼之執 行期間產生異常之結果的本機上下文T,漏失。特別是,該 主題堆疊81係於執行該主題異常處置器丨70之翻譯的版 本時保留的。關於進一步優點,使用該主題堆疊81用於 本機連結執行允許於顯然將處理之該主題碼1 7中環境切 換,例如藉類似於’’longjmp”函數的執行庫呼叫。longjmp 函數藉呼叫setjmp而復原先前儲存的主題堆疊及主題狀態 。此提供一種方式以執行非局部”go to”型指令,並典型地 用於從該主題異常處置器1 7 0傳遞執行至恢復碼。因而, 若該主題碼17呼叫longjmp,便藉使用該主題堆疊81用 於本機連結資源而顯然地可要求恢復。關於該主題 longjmp函數的翻譯部分,該翻譯的碼重置該主題堆疊指 標SP_S以要求恢復藉本機連結機構所配置的堆疊空間。 在本發明的一些交替實施例中,該本機碼28的執行 可使用該目標平台10之該記憶體18中其他地方的不同堆 疊,例如該翻譯器19的堆疊(翻譯器堆疊)或分別配置 的本機堆疊(未顯示),而非該主題堆疊81。 圖6顯示如本發明之實施例中所使用的,當處置本機 界限碼中異常時執行控制的流程。 -25- 200813838 在圖6中,該呼叫程式主題碼17a (如同呼叫程式目 標碼21a之執行)請求該本機界限碼28,且適當主題狀態 S儲存於該主題堆疊81上,以允許返回該呼叫程式目標 碼2 1 a。如上述,該本機界限碼2 8期間發生異常,提供目 標狀態T。該本機連結機構返回控制至該翻譯器1 9,並儲 存該目標狀態Τ’。 如上述,該翻譯器1 9產生該第二主題狀態S ’。在本 發明的觀點中,該第二主題狀態尤其包括至少主題程式計 數器PC__S’,其係藉該翻譯器1 9而特別修改。特別是,傳 遞至該主題異常處置器1 70之該特別修改的主題程式計數 器値PC_S’並非相應於該主題程式17的程式位址。然而, 當嘗試於異常發生之時點重新開始執行時,該主題異常處 置器170 (如同翻譯的主題異常處置器170’之執行)可使 用該主題程式計數器PC_S’做爲返回位址。 在圖6中所示第一示範實施例中,該翻譯器19包括 恢復單元1 92,其動作以恢復該目標狀態Τ’並恢復該本機 界限碼中執行。在一實施例中,該恢復單元係藉提供保留 位置1 7 1 (參照圖7 )而形成,例如翻譯器之位址空間內 的記憶體頁,其中該翻譯器19將視爲主題碼17的一部分 。因而,當該翻譯的主題異常處置器17〇’嘗試傳遞控制至 該特別修改的主題程式計數器PC__S’所識別的程式位置時 ,該翻譯器19便指向該保留位置171。在第一實施例中, 該保留位置171包含主題碼指令,當其以目標碼而實施翻 譯及執行時,引發將恢復的該目標狀態Τ’,使得該本機界 -26- 200813838 限碼28恢復執行。此處,復原該目標狀態Τ’適當地包括 以其先前內容的儲存版本塡注目標暫存器,例如從該主題 堆疊81取出該些値。 在亦如圖6所描繪的第二示範實施例中,該保留位置 1 7 1包含特定狀況指令,其未落於主題架構的指令集內。 而是,該翻譯器1 9識別該些特定狀況指令並回應執行恢 復常式,以恢復該儲存的目標狀態Τ’並允許該本機碼28 恢復。此處,該恢復常式適當地提供爲該翻譯器碼1 9部 分。 在其他示範實施例中,於該主題狀態Υ中傳遞的該程 式計數器PC_S’爲預設的槪念値(例如0X000000 ),其未 相應於目標架構之記憶體中的實際位置。該翻譯器1 9裝 配以識別該特定程式計數器,且並非傳遞控制至該識別的 位置,而是重定向執行的流程以執行該恢復常式171,其 載入該儲存的目標狀態τ並允許該本機碼28恢復。該特 定實施例於主題程式計數器爲一特定預設値並採取不同動 作時依賴該翻譯器1 9檢測。 再次參照圖5及6,在文中所討論的示範實施例中, 該第一主題狀態S用於製造該第二主題狀態S(。適當地’ 於呼叫該本機碼28時儲存該第一主題狀態S,且因而存 在該第一主題狀態S以於異常發生時移至該第二主題狀態 S’。即,該舊的主題狀態S被複製而成爲該新的主題狀態 S·,除了該程式計數器PC_S被修改爲該特定値PC_S’,及 /或該堆疊指標更新爲該主題堆疊81的新項目。該機構 -27- 200813838 提供具足以處置異常之可工作主題狀態的該主題異常處置 器17 0。該主題異常處置器170可例如檢查該主題程式計 數器PC_S以判斷主題程式內何處發生異常。該主題處置 器1 70接著可判斷如何處理該異常。該主題異常處置器 170通常以實施一些有關該主題碼程式17之程式位址及任 一動態配置記憶體之假設的方式寫入。然而,該主題異常 處置器1 70通常無法假定例如庫函數之系統的其他組件將 配駐的記憶體區域。其中向該主題異常處置器170報告的 該主題程式計數器PC_S’位在置於該主題碼17之位址範圍 的外部,該主題異常處置器170無法依據主題平台的假設 狀態而做出詳細的決定,並因而將以類似於該主題平台上 的處置方式而處置異常。 圖7爲目標平台之記憶體部分的槪圖。如圖7中所示 ,該主題程式1 7係置於該目標記憶體1 8中的主題程式區 域1 7 5,與例如該翻譯器碼1 9及該目標碼2 1之其他組件 並列。該主題程式區域1 7 5典型地包含虛凝位址的線性範 圍,如本技藝中技術純熟人士所熟悉的,其對映一或多套 實體儲存位置。傳遞至該主題異常處置器1 70之該修改的 程式計數器PC_S’適當地置於該主題程式區域175的外部 。此外,主題程式可具有例如用於工作儲存之一或多個動 態配置的記憶體區域176,且該修改的程式計數器PC — S’ 亦適當地落於該動態配置的記憶體區域1 76的外部。 圖8爲一槪要流程圖,描繪本發明之示範實施例所使 用之本機界限碼的異常處置方法。 -28- 200813838 如上述,異常發生於本機界限碼的執行期間(步驟 801)。儲存目前的執行狀態(步驟802),其反映目標平 台上本機界限碼的執行(目標狀態T)。而且,製造主題 狀態(S')(步驟8 03 )’其反映主題平台上執行的仿真 時點,好似發生異常同時在該主題平台上執行主題碼。特 別是,該製造的主題狀態S’包括針對主題堆疊的堆疊指標 SP_S’,其中該目標狀態Τ’被方便地儲存。而且,該主題 狀態s’如上述地包括特別修改的程式計數器PC_S’。異常 係參考該製造主題狀態s’而處置(步驟804 )。該主題異 常處置器170將包括指令,其判斷(步驟805 )是否於異 常發生的時點恢復執行(即返回至先前的執行時點,其在 本範例中位於本機界限碼中)。在一些環境中,主題程式 的執行暫停,或控制傳遞至程式的不同部分(步驟809 ) 。然而,其判斷於異常發生的時點恢復執行,執行係使用 該製造主題狀態S’而恢復(步驟806 ),其鏈結至該儲存 的目標狀態Τ’(步驟807 )以恢復本機界限碼的執行(步 驟 8 0 8 )。 總之,文中所描述的機構及實施例具有許多優點,包 括可靠及有效率地處置於本機界限碼期間發生的異常。在 示範實施例中,儲存藉該主題狀態S’鏈結的該目標狀態τ’ ,允許於處置異常之後將恢復之界限本機碼28的執行。 而且,藉以上述方式修改主題程式計數器,該主題異常處 置器170可直接或間接實施載入該儲存的目標狀態Τ’的該 恢復函數171,而返回控制至該本機碼28。此外,使用該 -29- 200813838 主題堆疊81以執行該本機碼28保持該主題堆疊的次序良 好,並允許有效率地釋出資源。經由上述及/或藉體現本 發明所描述的實施例,該些及其他特徵與優點對於技術純 熟人士而言將是顯而易見的。 儘管已顯示及描述少數示範實施例,但本技藝中技術 純熟人士將理解的是,如申請專利範圍中所定義的,在不 偏離本發明之範圍下可實施各式變更及修改。 注意請指向與連接本申請案之本說明書同時或之前提 出申請的所有論文及文件,其向本說明書之公眾檢查開放 ,且所有該論文及文件的內容均以參考的方式倂入本文。 本說明書(包括任一申請專利範圍、摘要及附圖)中 所揭露的所有特徵,及/或所揭露的任一方法或程序的所 有步驟,除了至少一些特徵及/或步驟爲互斥的組合外, 可結合爲任一組合。 除非明顯地表達不同,本說明書(包括任一申請專利 範圍、摘要及附圖)中所揭露的每一特徵可藉改變相同、 等效或類似的本機特徵而予替代。因而,除非明顯地表達 不同,所揭露的每一特徵僅爲同類之等效或類似特徵的一 個範例。 本發明並不限於上述實施例的內容。本發明延伸至本 說明書(包括任一申請專利範圍、摘要及附圖)中所揭露 的任一新穎特徵或新穎特徵的組合,或所揭露的任一方法 或程序之任一新穎步驟或新穎步驟的組合。 -30- 200813838 【圖式簡單說明】 附圖被倂入並構成部分說明書,其描繪目前較佳的完 成並描述如下: 圖1爲一方塊圖,描繪一種計算系統,其中本發明的 實施例提供應用; 圖2爲一槪圖,描繪本發明之實施例中使用的本機連 結機構; 圖3爲一槪圖,顯示藉本發明之示範實施例的異常處 置所使用的組件; 圖4爲一槪圖,顯示當呼叫主題庫函數及當處置該庫 函數之執行期間異常時,主題計算平台中執行; 圖5爲一槪圖,顯示如本發明之實施例中所使用的, 當實施本機連結及當處置本機界限碼中異常時,目標計算 平台中執行; 圖6爲一槪圖,顯示如本發明之實施例中所使用的, 當處置本機界限碼中異常時,執行控制的流程; 圖7爲目標計算平台之記憶體部分的槪圖;及 圖8爲一槪要流程圖,描繪如本發明之示範實施例中 所使用的,本機界限碼之異常的處置方法。 【主要元件符號說明】 1 :主題計算架構 1 :主題計算平台 2 :主題作業系統 -31 - 200813838 ‘ 3 :主題處理器 . 5 :主題暫存器 8 :主題記憶體 1 0 :目標計算系統 1 0 :目標計算平台 1〇 :目標架構 1 3 :目標處理器 φ 15 :目標暫存器 1 7 :主題碼 1 7 :主題程式 17a :主題可執行檔案 17b、17c :庫函數 1 8 :記憶體 1 8 :記憶體位置 1 8 :目標記憶體 • 1 9 :翻譯器單元 1 9 :翻譯器碼 1 9 :翻譯器 20 :目標作業系統 21、 21a、 21b:目標碼 27 :整體暫存器記憶體 27 :主題暫存器庫 27 :摘要暫存器庫 2 8 ·本機碼 -32- 200813838 28 :本機界限碼 8 1 :主題堆疊 170、170’ :主題異常處置器單元 1 7 1 :保留位置 1 7 1 :恢復常式 1 7 1 :恢復函數 175 :主題程式區域 176 :記憶體區域 1 9 1 :異常處置器單元 192 :恢復單元
33-
Claims (1)
- 200813838 十、申請專利範圍 1_ 一種計算系統,包含: 一第一型目標處理器; 一記憶體單元,配置以儲 本機碼部分,及可於包括一第 架構上執行的複數主題碼部分 一翻譯器單元,配置以轉 分爲目標碼,並控制該目標處 括連結至少一該主題碼部分至 標處理器上該本機碼部分的執 題碼部分爲目標碼; 一異常處置器單元,配置 本機碼部分之執行期間產生纪 目標狀態資料結構儲存於該記 目標處理器中相對於該本機碼 標狀態,及(ii)於該記憶體 構,其包含代表該主題計算架 狀態; 一主題異常處置器單元, 參考該主題狀態資料結構中所 號;及 一恢復單元,配置以於該 器單元處置之後恢復執行,其 構而從該記憶體單元中該目標 存可由該目標處理器執行的 二型主題處理器之主題計算 f 換至少一些該複數主題碼部 理器上該目標碼的執行,包 該本機碼部分,及引動該目 行,而替代轉換該至少一主 以回應於該目標處理器上該 j異常信號,其係藉(i )將 憶體單元中,其包含代表該 部分之執行的目前時點的目 單元中產生主題狀態資料結 構上執行之仿真時點的主題 配置以處置該記憶體單元中 提供該主題狀態的該異常信 異常信號經該主題異常處置 係藉使用該主題狀態資料結 狀態貪料結構’復原該目標 -34- 200813838 • 狀態至該目標處理器中,並接著依據該目標狀態使該目標 處理器恢復該本機碼部分的執行。 2·如申請專利範圍第1項之計算系統,其中配置該異 常處置器單兀以製造包括至該目標狀態資料結構之鏈結的 該主題狀態資料結構,及配置該恢復單元以使用該主題狀 態資料結構中該鏈結而將該目標狀態資料結構置於該記憶 體單元中。 Φ 3 ·如申請專利範圍第1項之計算系統,其中配置該恢 復單元以使該目標處理器執行恢復常式以復原該目標狀態 至該目標處理器中。 4.如申請專利範圍第1項之計算系統,其中配置該異 常處置器單元以製造包括修改的主題程式計數器之該主題 狀態資料結構,及配置該恢復單元以依據該修改的主題程 式計數器而通過執行控制,使得該目標處理器執行恢復常 式以載入該目標狀態並返回執行控制至該本機碼部分。 ® 5 .如申請專利範圍第4項之計算系統,其中該修改的 主題程式計數器具有一預設値,並配置該恢復單元以檢測 該預設値及重定向該目標處理器而執行該恢復常式。 6 ·如申請專利範圍第1項之計算系統,其中該主題狀 態資料結構包括一修改的主題程式計數器,且該記憶體單 元進一步包含一保留位置,其將用於位於該修改的主題程 式計數器所識別之位址的該主題碼部分。 7.如申請專利範圍第6項之計算系統,其中該記憶體 單元中該保留位置包含主題碼指令,且該恢復單元使該翻 -35- 200813838 • 譯器單兀翻譯該主題碼指令爲由該目標處理器執彳了的目標 - 碼,藉以恢復該目標狀態及恢復該本機碼部分的執行。 8 .如申請專利範圍第6項之計算系統,其中該保留位 置包含未落於該主題計算架構之指令集架構內的特定狀況 指令,並配置該恢復單元以檢測該特定狀況指令,並回應 而使該目標處理器執行一恢復常式以恢復該儲存的目標狀 態及恢復該本機碼部分的執行。 φ 9·如申請專利範圍第6項之計算系統,其中當嘗試自 該異常發生的時點重新開始該主題碼的執行時,該恢復單 元使該翻譯器單元使用該修改的主題程式計數器做爲處置 該異常後的返回位址,使得執行控制傳遞至該保留位置。 1 〇 ·如申請專利範圍第1項之計算系統,其中配置該 翻譯器單元以轉換呼叫程式主題碼部分爲呼叫程式目標碼 部分,藉以形成包括至少主題程式計數器的第一主題狀態 9 • 其中該目標處理器上該呼叫程式目標碼部分的執行從 該呼叫程式目標碼部分呼叫該本機碼部分;及 配置該異常處置單元以複製及修改該第一主題狀態, 而形成記錄於該主題狀態資料結構的該主題狀態。 11.如申請專利範圍第1項之計算系統,其中該記憶 體單元進一步包含一主題堆疊資料結構,用於該主題計算 架構上該主題碼部分的仿真執行。 12·如申請專利範圍第11項之計算系統,其中配置該 目標處理器以使用該主題堆疊資料結構執行該本機碼部分 -36- 200813838 1 3 .如申請專利範圍第1 1項之計算系統,其中: 配置該異常處置單元以於處置該異常之前,儲存該主 題狀態於主題堆疊資料結構上;及 配置該恢復單元以於該主題異常處置單元處置該異常 之後,從該主題堆疊資料結構獲得該主題狀態。 14. 如申請專利範圍第1 1項之計算系統,其中: 配置異常處置單元以於該主題異常處置單元處置該異 常之前,儲存該目標狀態於該主題堆疊資料結構上;及 配置該恢復單元以於該主題異常處置單元處置該異常 之後,從該主題堆疊資料結構獲得該目標狀態。 15. 如申請專利範圍第14項之計算系統,其中: 配置該異常處置單元以儲存包含該目標處理器之一套 暫存器之値的該目標狀態至該主題堆疊資料結構中;及 配置該恢復單元以復原該目標狀態至該目標處理器中 ,包括載入來自該主題堆疊資料結構的該儲存的値至該套 暫存器中。 16. 如申請專利範圍第1項之計算系統,其中配置該 主題異常處置單元以處置該異常,包括使用該主題狀態判 斷而於該異常發生時點恢復執行,或藉改變該主題狀態中 主題程式計數器以製造修改的主題程式計數器而於主題程 式中另一時點恢復執行。 1 7. —種計算系統中異常信號的處置方法,包含以下 步驟 * -37- 200813838 • (a)實施程式碼轉換’以轉換可由主題計算架構執 • 行的主題碼爲可由該計算系統執行的目標碼; (b )執行屬於該計算系統的本機碼部分,以替代翻 譯該主題碼部分爲該目標碼; (c )回應於執行本機碼部分期間所產生異常信號, 實施下列步驟: (i )儲存代表該計算系統中相對於該本機碼部分之 # 執行的目前時點的目標狀態; (Π )產生代表該主題計算架構中執行之仿真時點 的主題狀態;及 (iii )參考該主題狀態處置該異常信號;及 (d )藉使用該主題狀態恢復來自該異常信號的執行 ’以復原該目標狀態,並接著使用該目標狀態以恢復該本 機碼部分的執行。 18·如申請專利範圍第17項之方法,其中該主題狀態 ^ 包含至該目標狀態的鏈結。 19·如申請專利範圍第17項之方法,其中該步驟(d )包含執行一恢復常式以復原該目標狀態。 20·如申請專利範圍第17項之方法,其中該主題狀態 包括一修改的主題程式計數器,且該方法進一步包含傳遞 執行控制至該修改的主題程式計數器,藉以執行一恢復常 式以載入該目標狀態並返回執行控制至該本機碼部分。 21·如申請專利範圍第20項之方法,其中該修改的主 題程式計數器具有一預設値,且該方法進一步包含檢測該 -38 - 200813838 預設値並重定向執行控制以執行該恢復常式。 22. 如申請專利範圍第17項之方法,其中該主題狀態 包括一修改的主題程式計數器,且該方法進一步包含提供 一保留位置,其將用於位於該修改的主題程式計數器所識 別之位址的該主題碼部分。 23. 如申請專利範圍第22項之方法,其中該保留位置 包含主題碼指令,且該方法包含翻譯及執行該主題碼指令 做爲目標碼,藉以恢復該目標狀態及恢復該本機碼部分的 執行。 24. 如申請專利範圍第22項之方法,其中該保留位置 包含未落於該主題計算架構之指令集架構內的特定狀況指 令,且該方法包含檢測該特定狀況指令,並回應執行一恢 復常式以恢復該儲存的目標狀態及恢復該本機碼部分的執 行。 25. 如申請專利範圍第22項之方法,包含當嘗試自該 異常發生的時點重新開始該主題碼的執行時,使用該修改 的主題程式計數器做爲處置該異常後的返回位址,使得執 行控制傳遞至該保留位置。 26·如申請專利範圍第17項之方法,進一步包含下列 步驟: 轉換呼叫程式主題碼部分爲目標碼,並形成包括至少 主題程式i十數器的第一'主題狀態; 從該呼叫程式目標碼部分呼叫該本機碼部分;及 複製及修改該第一主題狀態以形成該主題狀態。 -39- 200813838 27.如申請專利範圍第17項之方法,進一步包含於該 目標計算系統的記憶體中提供一主題堆疊資料結構,用於 該主題計算架構上該主題碼的仿真執行。 2 8 .如申請專利範圍第2 7項之方法,進一步包含使用 該主題堆疊執行該本機碼部分。 29·如申請專利範圍第28項之方法,進一步包含於處 置該異常之前儲存該主題狀態於主題堆疊上,藉此於處置 該異常之後可從該主題堆疊獲得該儲存的主題狀態。 3 0·如申請專利範圍第28項之方法,進一步包含於處 置該異常之前儲存該目標狀態於該主題堆疊上,藉此於處 置該異常之後可從該主題堆疊獲得該目標狀態。 3 1·如申請專利範圍第29項之方法,其中儲存該目標 狀態的該步驟包含儲存該目標計算系統之該目標處理器之 一套暫存器的値至該主題堆疊上,且該方法進一步包含復 原包括載入來自該主題堆疊的該儲存的値至該套暫存器中 的該目標狀態。 3 2.如申請專利範圍第17項之方法,進一步包含處置 該異常信號,並使用該主題狀態判斷而於該異常發生時點 恢復該主題碼的執行,或藉改變該主題狀態中主題程式計 數器而於該主題碼中另一時點恢復該主題程式的執行。 33. —種目標計算平台中異常的處置方法,包含以下 步驟: 轉換可由主題計算平台執行的主題碼爲可由該目標計 算平台執行的目標碼,包括轉換主題碼部分的呼叫程式爲 -40- 200813838 ^ 目標碼部分的呼叫程式; • 執行目標碼部分的該呼叫程式,藉以於該目標計算平 台上產生關於該目標碼之執行的第一目標狀態,並於該主 題計算平台上仿真代表主題碼部分之該呼叫程式之執行的 第一主題狀態; 從目標碼部分的該呼叫程式呼叫屬於該目標計算平台 的本機碼部分; • 執行該目標計算平台上該本機碼部分,藉以產生第二 目標狀態,且於該本機碼執行期間異常發生處儲存該第二 目標狀態,並依據該第一主題狀態產生第二主題狀態,其 中該第二主題狀態包含至該第二目標狀態的鏈結;及 參考該第二主題狀態而處置該異常,並使用該第二主 題狀態以鏈結至該第二目標狀態,藉以恢復該本機碼部分 中執行。 3 4.如申請專利範圍第33項之方法,進一步包含當恢 ® 復從該異常的執行時,恢復常式的執行以復原該第二目標 狀態的該步驟。 3 5 ·如申請專利範圍第3 3項之方法,其中該第二主題 狀態包含一修改的主題程式計數器,且該方法進一步包含 傳遞執行控制至該修改的主題程式計數器,載入一恢復常 式以載入該儲存的第二目標狀態,並藉以返回執行控制至 該本機碼部分。 36.如申請專利範圍第35項之方法’其中該修改的主 題程式計數器具有一預設値’且該方法進一步包含檢測該 -41 - 200813838 預設値及重定向對於該恢復常式執行控制。 37·如申請專利範圍第33項之方法,其中 狀態包含一修改的主題程式計數器,且該方法 提供一保留位置,其將用於位於該修改的主題 所識別之位址的該主題碼部分。 38.如申請專利範圍第37項之方法,其中 包含主題碼指令,且該方法包含轉換及執行該 做爲目標碼,因而使該儲存的目標狀態恢復, 碼部分恢復執行。 39·如申請專利範圍第37項之方法,其中 包含未落於該主題計算平台之指令集架構內的 令,且該方法包含檢測該特定狀況指令,並回 復常式以恢復該儲存的第二目標狀態,藉此使 分的執彳了恢復。 4〇·如申請專利範圍第37項之方法,包含 異常發生的時點重新開始執行時,使用該修改 計數器做爲處置該異常後的返回位址,藉此執 至該保留位置。 4 1 .如申請專利範圍第3 3項之方法,其中 狀態包含至少一主題程式計數器,且其中產生 狀態包含複製該第一主題狀態以形成該主題狀 該主題程式計數器爲修改的値。 42.如申請專利範圍第33項之方法,進一 目標計算平台中提供一主題堆疊資料結構,以 該第二主題 進一步包含 程式計數器 該保留位置 主題碼指令 藉此該本機 該保留位置 特定狀況指 應執行一恢 該本機碼部 當嘗試自該 的主題程式 行控制傳遞 該第一主題 該第二主題 態,並修改 步包含於該 於該主題計 -42 - 200813838 算平台上仿真該主題碼的執行。 • 43 ·如申請專利範圍第42項之方法,進一步包含參考 該主題堆疊而執行該本機碼部分。 44. 如申請專利範圍第42項之方.法,進一步包含於處 置該異常之前儲存至少該第二主題狀態於該主題堆疊上, 使得於處置該異常之後可從該主題堆疊得到該儲存的第二 主題狀態。 45. 如申請專利範圍第42項之方法,進一步包含於處 置該異常之前儲存至少該第二目標狀態於該主題堆疊上, 使得於處置該異常之後可從該主題堆疊得到該儲存的第二 目標狀態。 46. 如申請專利範圍第45項之方法,其中儲存該第二 目標狀態的該步驟包含儲存該目標計算平台之目標處理器 的一套目標暫存器的値至該主題堆疊,且該方法進一步包 含復原該第二目標狀態,包括從該主題堆疊載入該儲存的 値至該套目標暫存器。 4 7.如申請專利範圍第33項之方法,進一步包含處置 該異常,並使用該主題狀態判斷而於該異常發生時點恢復 執行,或藉改變該主題狀態中主題程式計數器而於該主題 碼中另一時點恢復該主題程式的執行。 4 8.—種配置以處置於連結至本機碼期間之異常信號 的翻譯器設備,包含: 一翻譯器單元,配置以轉換可由主題計算平台執行的 主題碼爲可由目標計算平台執行的目標碼,並配置以使該 -43- 200813838 目標計算平台執行屬於該目標計算平台的本機碼部分,取 代轉換該主題碼部分爲該目標碼,且進一步其中配置該翻 譯器單元,以轉換呼叫程式主題碼爲藉該目標計算平台執 行的呼叫程式目標碼,以提供第一目標狀態及第一主題狀 態,及使當呼叫時至少該第一主題狀態從該呼叫程式目標 碼儲存至該本機碼部分中; 一異常處置器單元,配置以檢測於執行該本機碼期間 產生的異常信號,使代表目前執行時點的第二目標狀態儲 存於該本機碼的該目標計算平台中,並提供第二主題狀態 ,其中該第二主題狀態包含一至該第二目標狀態的鏈結; 一主題異常處置器單元,配置以參考該第二主題狀態 而處置該異常;及 一恢復單元,配置以使該目標計算平台藉從該第二主 題狀態鏈結至該第二目標狀態而恢復該本機碼的執行。 49· 一種電腦可讀取媒體,具有記錄於上並可藉電腦 完成以實施處置異常信號之方法的指令,該方法包含以下 步驟: (a)實施程式碼轉換,以轉換可由主題計算架構執 行的主題碼爲可由目標計算架構執行的目標碼; (b )執f 了屬於該目標g 算架構的本機碼部分,以替 代翻譯該主題碼部分爲該目標碼; (c )回應於執行該本機碼部分期間所產生異常信號 ,實施下列步驟: (i )儲存代表該目標計算架構中相對於該本機碼部 -44- 200813838 ^ 分之執行的目前時點的目標狀態; - (i i )產生代表該主題計算架構中執行之仿真時點 的主題狀態;及 (iii )參考該主題狀態處置該異常信號;及 (d )藉使用該主題狀態恢復來自該異常信號的執行 ,以復原該目標狀態,並接著使用該目標狀態以恢復該本 機碼部分的執行。 φ 5 0 · —種電腦可讀取媒體,具有記錄於上並可藉電腦 完成以實施處置異常之方法的指令,該方法包含以下步驟 轉換可由主題計算平台執行的主題碼爲可由目標計算 平台執行的目標碼,包括轉換主題碼部分的呼叫程式爲目 標碼部分的呼叫程式; 執行目標碼部分的該呼叫程式,藉以於該目標計算平 台上產生關於該目標碼之執行的第一目標狀態,並於該主 Θ 題計算平台上仿真代表主題碼部分之該呼叫程式之執行的 第一主題狀態; 從目標碼部分的該呼叫程式呼叫屬於該目標計算平台 的本機碼部分; 執行該目標計算平台上該本機碼部分,藉以產生第二 目標狀態,且於該本機碼執行期間異常發生處儲存該第二 目標狀態,並依據該第一主題狀態產生第二主題狀態,其 中該第二主題狀態包含至該第二目標狀態的鏈結;及 參考該第二主題狀態而處置該異常,並使用該第二主 -45- 200813838 題狀態以鏈結至該第二目標狀態,藉以恢復該本機碼部分 中執行。-46-
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| GBGB0612149.5A GB0612149D0 (en) | 2005-11-14 | 2006-06-20 | Method and apparatus for handling exceptions during binding to native code |
| US11/546,012 US20070294675A1 (en) | 2006-06-20 | 2006-10-10 | Method and apparatus for handling exceptions during binding to native code |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| TW200813838A true TW200813838A (en) | 2008-03-16 |
| TWI427535B TWI427535B (zh) | 2014-02-21 |
Family
ID=38878388
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW096122074A TWI427535B (zh) | 2006-06-20 | 2007-06-20 | 於連結至本機碼期間處置異常之方法及設備 |
Country Status (7)
| Country | Link |
|---|---|
| US (2) | US20070294675A1 (zh) |
| EP (1) | EP2035926B1 (zh) |
| JP (1) | JP4954281B2 (zh) |
| CN (1) | CN101473303B (zh) |
| GB (1) | GB2439443B (zh) |
| TW (1) | TWI427535B (zh) |
| WO (1) | WO2007148132A1 (zh) |
Families Citing this family (16)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20070294675A1 (en) * | 2006-06-20 | 2007-12-20 | Transitive Limited | Method and apparatus for handling exceptions during binding to native code |
| US9658849B2 (en) * | 2006-07-06 | 2017-05-23 | Imperas Software Ltd. | Processor simulation environment |
| US7552405B1 (en) * | 2007-07-24 | 2009-06-23 | Xilinx, Inc. | Methods of implementing embedded processor systems including state machines |
| US9229707B2 (en) * | 2008-12-18 | 2016-01-05 | Sap Se | Zero downtime mechanism for software upgrade of a distributed computer system |
| US8504875B2 (en) * | 2009-12-28 | 2013-08-06 | International Business Machines Corporation | Debugging module to load error decoding logic from firmware and to execute logic in response to an error |
| US20130054533A1 (en) * | 2011-08-24 | 2013-02-28 | Microsoft Corporation | Verifying a data recovery component using a managed interface |
| US9116711B2 (en) * | 2012-02-08 | 2015-08-25 | Arm Limited | Exception handling in a data processing apparatus having a secure domain and a less secure domain |
| US8819648B2 (en) * | 2012-07-20 | 2014-08-26 | International Business Machines Corporation | Control flow management for execution of dynamically translated non-native code in a virtual hosting environment |
| CN103813366B (zh) * | 2012-11-07 | 2017-12-08 | 锐迪科(重庆)微电子科技有限公司 | 一种处理器异常的恢复方法和移动终端 |
| CN103077073B (zh) * | 2013-01-15 | 2016-12-28 | 华为技术有限公司 | 即时功能级仿真器的实现方法和装置及仿真处理器 |
| CN104219259B (zh) * | 2013-05-30 | 2017-09-12 | 中国电信股份有限公司 | 一种传输异常事件的处理方法和装置 |
| FR3012816B1 (fr) * | 2013-11-05 | 2017-12-08 | Arkema France | Composition thermoplastique resistante aux chocs |
| US10754765B2 (en) * | 2017-05-17 | 2020-08-25 | Google Llc | Operating system validation |
| CN107704356B (zh) * | 2017-06-12 | 2019-06-28 | 平安科技(深圳)有限公司 | 异常堆栈信息获取方法、装置及计算机可读存储介质 |
| CN109558292A (zh) * | 2017-09-26 | 2019-04-02 | 阿里巴巴集团控股有限公司 | 一种监控方法及装置 |
| CN119576419B (zh) * | 2025-02-09 | 2025-04-04 | 北京麟卓信息科技有限公司 | 一种面向arm众核动态指令转换的异常处理转换优化方法 |
Family Cites Families (28)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6535903B2 (en) * | 1996-01-29 | 2003-03-18 | Compaq Information Technologies Group, L.P. | Method and apparatus for maintaining translated routine stack in a binary translation environment |
| US6247172B1 (en) * | 1998-07-02 | 2001-06-12 | Hewlett-Packard Company | Method for a translation system that aggressively optimizes and preserves full synchronous exception state |
| DE69924857T2 (de) | 1998-10-10 | 2006-03-02 | Transitive Ltd., Hanging Ditch | Programm-kode-umwandlung |
| US6321377B1 (en) * | 1998-12-03 | 2001-11-20 | International Business Machines Corporation | Method and apparatus automatic service of JIT compiler generated errors |
| US8121828B2 (en) * | 1999-01-28 | 2012-02-21 | Ati Technologies Ulc | Detecting conditions for transfer of execution from one computer instruction stream to another and executing transfer on satisfaction of the conditions |
| US7065633B1 (en) * | 1999-01-28 | 2006-06-20 | Ati International Srl | System for delivering exception raised in first architecture to operating system coded in second architecture in dual architecture CPU |
| US7941647B2 (en) * | 1999-01-28 | 2011-05-10 | Ati Technologies Ulc | Computer for executing two instruction sets and adds a macroinstruction end marker for performing iterations after loop termination |
| US7111290B1 (en) * | 1999-01-28 | 2006-09-19 | Ati International Srl | Profiling program execution to identify frequently-executed portions and to assist binary translation |
| US7065750B2 (en) * | 1999-02-17 | 2006-06-20 | Elbrus International | Method and apparatus for preserving precise exceptions in binary translated code |
| JP2000322269A (ja) * | 1999-05-10 | 2000-11-24 | Nec Software Hokuriku Ltd | エミュレーションシステム |
| US7254806B1 (en) * | 1999-08-30 | 2007-08-07 | Ati International Srl | Detecting reordered side-effects |
| US6934832B1 (en) * | 2000-01-18 | 2005-08-23 | Ati International Srl | Exception mechanism for a computer |
| US6810476B2 (en) * | 2000-08-09 | 2004-10-26 | Advanced Micro Devices, Inc. | Variable state save formats based on operand size of state save instruction |
| US6895579B2 (en) * | 2001-07-31 | 2005-05-17 | Intel Corporation | Method and apparatus for maintaining exception reporting for register promotion |
| US6907519B2 (en) | 2001-11-29 | 2005-06-14 | Hewlett-Packard Development Company, L.P. | Systems and methods for integrating emulated and native code |
| GB0225649D0 (en) * | 2002-11-04 | 2002-12-11 | Transitive Technologies Ltd | Incremental validation |
| US7536682B2 (en) | 2003-04-22 | 2009-05-19 | International Business Machines Corporation | Method and apparatus for performing interpreter optimizations during program code conversion |
| GB2411990B (en) | 2003-05-02 | 2005-11-09 | Transitive Ltd | Improved architecture for generating intermediate representations for program code conversion |
| GB0315844D0 (en) * | 2003-07-04 | 2003-08-13 | Transitive Ltd | Method and apparatus for performing adjustable precision exception handling |
| US7805710B2 (en) * | 2003-07-15 | 2010-09-28 | International Business Machines Corporation | Shared code caching for program code conversion |
| US7434209B2 (en) * | 2003-07-15 | 2008-10-07 | Transitive Limited | Method and apparatus for performing native binding to execute native code |
| GB0316532D0 (en) * | 2003-07-15 | 2003-08-20 | Transitive Ltd | Method and apparatus for partitioning code in program code conversion |
| WO2006103395A1 (en) | 2005-03-30 | 2006-10-05 | Transitive Limited | Preparing instruction groups in a processor having multiple issue ports |
| GB2425372B (en) * | 2005-04-20 | 2007-06-13 | Transitive Ltd | Method and apparatus for precise handling of exceptions during program code conversion |
| GB2427045B (en) * | 2005-06-06 | 2007-11-21 | Transitive Ltd | Method and apparatus for converting program code with access coordination for a shared resource |
| US20070294675A1 (en) * | 2006-06-20 | 2007-12-20 | Transitive Limited | Method and apparatus for handling exceptions during binding to native code |
| GB2448523B (en) * | 2007-04-19 | 2009-06-17 | Transitive Ltd | Apparatus and method for handling exception signals in a computing system |
| GB2457341B (en) * | 2008-02-14 | 2010-07-21 | Transitive Ltd | Multiprocessor computing system with multi-mode memory consistency protection |
-
2006
- 2006-10-10 US US11/546,012 patent/US20070294675A1/en not_active Abandoned
-
2007
- 2007-06-19 US US11/820,480 patent/US8458674B2/en active Active
- 2007-06-19 GB GB0711837A patent/GB2439443B/en not_active Expired - Fee Related
- 2007-06-19 CN CN200780023140.9A patent/CN101473303B/zh active Active
- 2007-06-19 EP EP07733764A patent/EP2035926B1/en active Active
- 2007-06-19 WO PCT/GB2007/050343 patent/WO2007148132A1/en not_active Ceased
- 2007-06-19 JP JP2009515965A patent/JP4954281B2/ja active Active
- 2007-06-20 TW TW096122074A patent/TWI427535B/zh active
Also Published As
| Publication number | Publication date |
|---|---|
| EP2035926A1 (en) | 2009-03-18 |
| GB2439443B (en) | 2008-12-17 |
| EP2035926B1 (en) | 2013-02-27 |
| US20080005724A1 (en) | 2008-01-03 |
| CN101473303B (zh) | 2012-08-22 |
| US8458674B2 (en) | 2013-06-04 |
| CN101473303A (zh) | 2009-07-01 |
| GB2439443A (en) | 2007-12-27 |
| JP4954281B2 (ja) | 2012-06-13 |
| WO2007148132A1 (en) | 2007-12-27 |
| GB0711837D0 (en) | 2007-07-25 |
| TWI427535B (zh) | 2014-02-21 |
| JP2009541834A (ja) | 2009-11-26 |
| US20070294675A1 (en) | 2007-12-20 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| TW200813838A (en) | Method and apparatus for handling exceptions during binding to native code | |
| Boos et al. | Theseus: an experiment in operating system structure and state management | |
| EP3788490B1 (en) | Execution control with cross-level trace mapping | |
| JP5740573B2 (ja) | 情報処理装置および情報処理方法 | |
| EP2165258B1 (en) | Apparatus and method for handling exception signals in a computing system | |
| CN105528284B (zh) | 一种内核故障注入方法及电子设备 | |
| KR101103973B1 (ko) | 조정가능한 정밀도의 예외 핸들링 수행을 위한 방법 및장치 | |
| CN114144764A (zh) | 使用影子栈的栈跟踪 | |
| US10628177B1 (en) | Unikernel provisioning | |
| CN104956337B (zh) | 计算机装置和计算机装置的控制方法 | |
| Li et al. | W-kernel: An OS kernel architecture designed with isolation and customizability | |
| RU2521265C2 (ru) | Система и способ автоматической обработки системных ошибок программного обеспечения | |
| Vostokov | Memory Dump Analysis Anthology | |
| US20210303316A1 (en) | Unikernel provisioning | |
| Luo et al. | BootRIST: Detecting and Isolating Mercurial Cores at the Booting Stage | |
| TW202544642A (zh) | 例外處置 | |
| Renzelmann | Improving the development and testing of device drivers |