gdt

    0熱度

    1回答

    我正在研究這個真正的保護模式轉換。我懷疑真正的保護模式是否可以在不加載ldt和idt的情況下發生,但通過加載gdt來實現。有鑑於此,第二個疑問就是爲什麼真正的模式程序不能轉換到v8086模式而不能在保護模式下運行? 謝謝

    1熱度

    2回答

    的內容 我分析拆解的DLL和卡住就行 mov ebx,fs:[00000004h] 我想找出寫入EBX與該數據的確切物理地址指令。 GDB告訴我,fs = 0x53. 我已經發現該地址取決於模式(受保護或實際),我敢肯定,CPU處於保護模式(見*)。所以段fs的開始應該存儲在GDT的某個地方,對吧?我也找到了GDT-register (0x009bd5c0007f)的地址,但gdb不允許我訪問

    0熱度

    1回答

    這是我的代碼: ... data_seg equ os_data-gdt_start code_seg equ os_code-gdt_start ... jmp code_seg:pm_start [BITS 32] pm_start: mov ax,data_seg mov ds,ax mov word [ds:0xb8000],0xC341 它正常工作時,在GDT

    0熱度

    1回答

    加載/存儲 IDT使用LIDT彙編指令加載。它需要一個IDT描述結構的位置: 偏移是表本身的虛擬地址。大小是表格的大小減去1.該結構可以使用SIDT指令再次存儲到存儲器中。 它在http://wiki.osdev.org/Interrupt_Descriptor_Table

    1熱度

    1回答

    我有一個引導程序爲我設置GDT。是否有可能找到這個GDT的地址,以便我可以使用它?

    1熱度

    1回答

    我定義我的共同ISR存根: isr_common_stub: pusha ; Pushes edi,esi,ebp,esp,ebx,edx,ecx,eax mov ax, ds ; Lower 16-bits of eax = ds. push eax ; save the data segment descriptor mov ax, 0x10 ; load t

    0熱度

    1回答

    我已經瞭解了全局描述符表(GDT)的基礎知識,並且我已經成功使用asm編寫了一個「GDT.inc」,以便我們可以輕鬆地將其包含在我們的引導程序。作爲一個嬰兒步驟i已經配置了代碼描述符和數據描述符來讀取和從第一字節寫入到字節0xFFFFFFFF的存儲器(在存儲器中的任何部分) ; null descriptor dd 0 ; null descriptor--just fill 8

    1熱度

    2回答

    如果該位爲零,那麼內存是逐字節尋址的? 如果它是1,那麼內存是4Kb的4Kb?因此,例如,如果這個位被設置爲0,並且我的地址是 ,那麼我會在該位置處尋址 對嗎?如果我處理下一個位置 a001h,那麼這將是內存中的下一個字節? 但是,如果這個位是1,我會尋址4Kb塊嗎? 那麼,解決一個000h給我一個4Kb塊,然後a001 下一個4Kb在內存中?

    0熱度

    1回答

    如果某個進程爲代碼執行調用屬於另一個進程的遠指針,會發生什麼情況? 在32位操作模式下,GDT是非常用的,並且可以充分使用分段。 那麼,如果請求的CS指針指向另一個進程的段,會發生什麼? 有時候這是允許的,我想。 但是,通常情況並非如此。 在64位模式下,分割中途關閉。 所有分段從0運行到處理器線性空間的頂部。另外,GDT似乎被輕易地使用;例如,Linux將所有進程中的所有用戶代碼放入一個段中。