[go: up one dir, main page]

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 PDF

Info

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
Application number
TW096122074A
Other languages
English (en)
Other versions
TWI427535B (zh
Inventor
Gavin Barraclough
Kit Man Wan
Abdul Rahman Hummaida
Original Assignee
Transitive Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from GBGB0612149.5A external-priority patent/GB0612149D0/en
Application filed by Transitive Ltd filed Critical Transitive Ltd
Publication of TW200813838A publication Critical patent/TW200813838A/zh
Application granted granted Critical
Publication of TWI427535B publication Critical patent/TWI427535B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45516Runtime code conversion or optimisation
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/481Exception 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)

  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-
TW096122074A 2006-06-20 2007-06-20 於連結至本機碼期間處置異常之方法及設備 TWI427535B (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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