過程調用、中斷及異常

過程調用、中斷及異常

ID:20813406

大?。?00.50 KB

頁數:4頁

時間:2018-10-16

過程調用、中斷及異常_第1頁
過程調用、中斷及異常_第2頁
過程調用、中斷及異常_第3頁
過程調用、中斷及異常_第4頁
資源描述:

《過程調用、中斷及異?!酚蓵T上傳分享,免費在線閱讀,更多相關內容在行業(yè)資料-天天文庫。

1、過程調用類型處理器支持兩種類型的過程調用:[1]CALL與RET指令[2]ENTER與LEAVE指令,配合CALL與RET指令這兩種過程調用機制都使用了程序棧(通常簡稱為“?!保┍4嬲{用過程的狀態(tài)、傳遞參數到被調過程,并為當前執(zhí)行的過程存儲局部變量。棧棧是一組連續(xù)的內存單元(見圖6-1),它位于SS寄存器指定的段中,最長可達4GBytes(即段的最大長度)。。。PUSH指令將數據壓入棧中,ESP寄存器遞減,寫入項位于棧頂。。。POP指令讀取棧頂的數據,ESP寄存器遞增。程序或操作系統可以設置多個棧,棧的最大數量取決于段和可用的物理內存。當設置了多

2、個棧時,同一時間只有一個?!斍皸!强捎玫?,當前棧所在的段由SS寄存器指定。所有的棧操作都是在當前棧進行的,比如,將ESP寄存器中的值作為內存地址時,它指向的是當前棧的一個地址。圖6-1棧結構[1]設定一個棧。。設定一個棧段。。將此棧段的段選擇器載入SS寄存器(使用MOV、POP或LSS指令)。。載入棧指針到ESP寄存器(使用MOV、POP或LSS指令)。[2]棧對齊棧指針可以是16位(字)或32位(雙字)邊界,這取決于棧段的寬度,而棧段的寬度取決于段描述符中的D標志。處理器并不會檢查棧指針是否對齊,這是運行在處理器上的程序和任務的職責,未

3、對齊的棧指針會極大地降低性能,有時候還會導致程序故障。[3]棧訪問的地址大小屬性隱性地使用棧的指令(比如PUSH和POP)有兩種地址大小屬性,16位或32位。顯性地址的屬性取決于當前代碼段的D標志和是否有67H地址大小前綴。棧頂的地址大小屬性決定了在棧訪問中使用SP還是ESP。[4]過程鏈接信息處理器為過程鏈接提供了兩種指針:棧幀基址指針和返回指令指針。。。棧被分為多個幀,每一個棧幀都可以有局部變量、過程鏈接信息和傳遞到其它過程的參數。棧幀基址指針(包含在EBP寄存器中)是棧幀內部固定的參考點。。。在轉移到被調過程的第一條指令之前,CALL指令會

4、把EIP寄存器中的地址push到當前棧,這一地址稱為返回指令指針。處理器并不會跟蹤返回指令指針的位置,程序員必須在執(zhí)行RET指令之前確保棧指針指向返回指令指針。使用CALL與RET調用過程CALL指令可以跳轉到當前代碼段(近調用)或其它代碼段(遠調用)的過程。近調用通常用于訪問當前運行的程序或任務的本地過程,遠調用通常用于訪問操作系統過程或不同任務中的程序。RET指令與CALL指令匹配。[1]近調用與返回操作CALL:。。將EIP寄存器的當前值入棧。。載入被調過程的偏移到EIP寄存器。。開始執(zhí)行被調過程RET:。。pop棧頂值(返回指令指針)到E

5、IP寄存器。。如果RET指令有可選的n參數,遞增棧指針(由n參數指定的字節(jié)數)。?;謴驼{用過程的運行[2]遠調用與返回操作CALL:。。將CS寄存器的當前值入棧。。將EIP寄存器的當前值入棧。。載入被調過程的段選擇器到CS寄存器。。載入被調過程的偏移到EIP寄存器RET:。。pop棧頂值(返回指令指針)到EIP寄存器。。pop棧頂值(返回的代碼段的段選擇器)到CS寄存器。。如果RET指令有可選的n參數,遞增棧指針(由n參數指定的字節(jié)數)。?;謴驼{用過程的運行[3]參數傳遞在過程之間傳遞參數有三種方式:通用寄存器、參數表或者棧。[4]保存過程狀態(tài)信

6、息處理器不會在調用過程時保存通用寄存器、段寄存器或EFLAGS寄存器的內容,所以必須顯性地保存需要的值。PUSHA與POPA指令能幫助保存和恢復通用寄存器的內容。PUSHA按照以下順序將通用寄存器的值入棧:EAX,ECX,EDX,EBX,ESP(執(zhí)行PUSHA指令之前的值),EBP,ESI和EDI。POPA指令恢復PUSHA指令保存的值(除了ESP值)。PUSHF指令將EFLAGS寄存器的低字入棧,而PUSHFD指令將整個EFLAGS寄存器入棧。[5]調用到其它權級IA-32架構的保護機制提供四種權限等級,編號0到3,數字越大,權限越小。圖6-3

7、.保護等級中斷與異常處理器提供兩種機制中斷程序運行:。。中斷是由I/O設備觸發(fā)的異步事件。。異常是當處理器檢查到一個或多個預定義條件成立時觸發(fā)的同步事件。IA-32架構定義了三種異常類型:故障、陷阱與終止。分程序結構語言的過程調用關于ENTER與LEAVE指令,略。

當前文檔最多預覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數學公式或PPT動畫的文件,查看預覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權有爭議請及時聯系客服。
3. 下載前請仔細閱讀文檔內容,確認文檔內容符合您的需求后進行下載,若出現內容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網絡波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯系客服處理。