RET是普通的子程序返回指令
在實模式和保護處理器從堆棧中彈出IP寄存器的內容,根據當前的CS:IP跳轉到新的地址運行,如果之前壓棧的還有參數,則這些參數也會被彈出
IRET是中斷服務子程序的返回指令
在實模式和保護模式下不一樣,在實模式中用於從中斷返回,會彈出IP和CS以及一些標志位,然后從CS:IP處開始執行
在保護模式下比較復雜,首先硬件根據中斷號找到對應的中斷描述符,中斷描述符分為三種類型,就是我們常說的中斷門,陷阱門,調用門。每個門中都含有段選擇子和一個偏移地址,每個門中還有一個DPL(優先級)值,CPU判斷當前的DPL必須小於門的DPL才會響應,CPU執行完檢查后會從當前任務的TSS段中得到中斷處理程序使用的棧段選擇子和棧指針(tss.ss0和tss.esp)做為新的棧地址,如果特權級不發生變化,直接將EFLAGS, CS, EIP壓入新棧中,如果特權級發生變化則將當前的棧段選擇子和棧指針壓入新棧中,EFLAGS,CS,EIP壓入新棧中,然后CPU從門中取出CS和IP開始運行