日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

自己动手写java虚拟机_自己动手写操作系统(要了解的知识点)

發(fā)布時間:2024/7/5 windows 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 自己动手写java虚拟机_自己动手写操作系统(要了解的知识点) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

自己動手寫操作系統(tǒng)(開篇)

自己動手寫操作系統(tǒng)(字符顯示)

說明:Intel 8086 或者不同的處理器,開機寄存器數(shù)據(jù)可能不一樣,但是大致原理差不多

了解過計算機啟動的同學肯定知道,當計算機啟動的時候 BIOS 會加載 MBR 數(shù)據(jù) 512 字節(jié)到 0x7c00 處。

為什么會加載到這個地方了?

這里給出參考鏈接:

英文參考鏈接:

https://www.glamenv-septzen.net/en/view/6

中文參考鏈接:

http://www.ruanyifeng.com/blog/2015/09/0x7c00.html

現(xiàn)在我們簡單了解一下,計算機開機加電過程到底是怎么一個樣子了?這里以 VirtualBox 6.1.6 虛擬軟件為例子:

VirtualBox 6.1.6 下載地址:

https://www.virtualbox.org/wiki/Downloadshttps://download.virtualbox.org/virtualbox/6.1.6/VirtualBox-6.1.6-137129-Win.exe
  • 先安裝 VirtualBox , 過程省略。
  • 安裝virtualbox出現(xiàn)2503、2502的錯誤提示解決方法: 右鍵點擊 選擇 以管理員身份運行

  • 打開 VirtualBox 的調試器, 運行 cmd 命令,啟動控制臺,輸入下面的配置命令即可
  • Microsoft Windows [版本 10.0.18363.418](c) 2019 Microsoft Corporation。保留所有權利。C:甥敳獲Administrator>set vVBOX_MSI_INSTALL_PATH=C:Program FilesOracleVirtualBoxC:甥敳獲Administrator>set VBOX_GUI_DBG_ENABLED=tureC:甥敳獲Administrator>set VBOX_GUI_DBG_AUTO_SHOW=tureC:甥敳獲Administrator>set vVBOX_GUI_DBG_AUTO_SHOW=tureVBOX_GUI_DBG_ENABLED=tureVBOX_MSI_INSTALL_PATH=C:Program FilesOracleVirtualBoxC:甥敳獲Administrator>cd %VBOX_MSI_INSTALL_PATH%C:Program FilesOracleVirtualBox>VirtualBox.exeC:Program FilesOracleVirtualBox>

    之后我們就可以看到這樣的效果了:

    現(xiàn)在我們在:Command 輸入 r 回車就可以看到效果:

    Welcome to the VirtualBox Debugger!Current VM is 09980000, CPU #0VBoxDbg> reax=00000000 ebx=00000000 ecx=00000000 edx=00000600 esi=00000000 edi=00000000eip=0000fff0 esp=00000000 ebp=00000000 iopl=0 nv up di pl nz na pe nccs=f000 ds=0000 es=0000 fs=0000 gs=0000 ss=0000 eflags=00000002f000:0000fff0 ea 5b e0 00 f0 jmp far 0f000h:0e05bhVBoxDbg>

    我們可以清晰的看到: eip = 0000fff0, cs=f000,( 對應的物理內存其實就是 FFFF0) 也就是開機加電的時候 cs 和 ip(eip) 設置為一個固定的值。 在內存 f000:0000fff0 處的內容為 ea 5b e0 00 f0 。, 距離內存最頂端只有 16 字節(jié)。8086 有 20 根地址線,所以最大尋找范圍為 1M的地址空間。

    ·

    8086 內存布局

    f000:0000fff0 ea 5b e0 00 f0 jmp far 0f000h:0e05bh ; ; 這里對應的是一條跳轉指令, 跳轉到物理內存為 FE05B 內存處; 這個地址還是 ROM BIOS 內存地址范圍。繼續(xù)執(zhí)行,直到通過調用; 中斷程序最終將 mbr 加載到 0x7c00處; 當然這里其中還干了很多其他的事情,比如搬數(shù)據(jù)到 0x00000 開始處。; 此時 CS:IP 對應為 F000: E05B ; 注意 jmp 會改變 cs 和 ip 的值

    中斷向量表:

    參考來源:

    http://www.bioscentral.com/misc/biosservices.htm

    中斷向量表

    設置斷點繼續(xù)運行,就可以看到對應寄存器的值了

    VBoxDbg> ba x 1 7c00Set access breakpoint 0 at 0000000000007c00VBoxDbg> dbgf event: Breakpoint 0! (raw)eax=0000aa55 ebx=00000000 ecx=00000001 edx=00000000 esi=00000000 edi=0000fff0eip=00007c00 esp=00007800 ebp=00000000 iopl=0 nv up ei pl zr na po nccs=0000 ds=0000 es=0000 fs=0000 gs=0000 ss=0000 eflags=002002460000:00007c00 eb 4e jmp +04eh (07c50h)VBoxDbg> u0000:00007c00 eb 4e jmp +04eh (07c50h)0000:00007c02 90 nop0000:00007c03 48 dec ax0000:00007c04 45 inc bp0000:00007c05 4c dec sp0000:00007c06 4c dec sp0000:00007c07 4f dec di0000:00007c08 49 dec cx0000:00007c09 50 push ax0000:00007c0a 4c dec spVBoxDbg>

    總結

    以上是生活随笔為你收集整理的自己动手写java虚拟机_自己动手写操作系统(要了解的知识点)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。