2012-09-14 100 views

回答

4

當跳轉到一個FWORD PTR,你所做的是「遠程跳轉」 - 也就是說,所指向的存儲器包含一個16位「選擇器」(指的是GDT或LDT中的段入口)和一個32位偏移量從選擇器引用的段開始。段描述符包含關於段的數據,當然包括它在內存中的起始位置。

在跳轉過程中,CPU做一些權限檢查以確保選擇是有效且被允許(有權限級別和細分種類和參與),然後將其有效地加載前16位爲CS,其餘爲EIP。從那時起,代碼地址可以有效地獲得CS段的基地址,並將它們轉換爲虛擬地址。

+0

啊。說得通。沒有意識到__WORD PTR被視爲邏輯地址。 –

2

遠程跳轉使用完整段基址:偏移值作爲絕對地址,所以它由16位段和32位地址組成。 它執行跳轉到位於與當前代碼段不同的段中的指令,但它應該處於相同的特權級別。