當前位置:首頁>職場>cpu執行指令過程動畫(CPU工作原理)
發布時間:2024-01-24閱讀(15)
CPU工作原理
1. 搭建開發測試環境(MacOS)1.1 安裝一些必要工具#安裝匯編編譯器brewinstallnasm#安裝虛擬機brewinstallqemu
該代碼的功能是在屏幕上打印"hello os",這里不再過多解釋這個代碼,這段代碼主要是為了后文介紹幾個基礎概念。
;主引導程序SECTION MBR vstart=0x7c00 mov ax,cs mov ds,ax mov es,ax mov ss,ax mov fs,ax mov sp,0x7c00 mov ax,0x600 mov bx,0x700 mov cx,0 mov dx,0x184f int 0x10 mov ah,3 mov bh,0 int 0x10 mov ax,message mov bp,ax mov cx,8 mov ax,0x1301 mov bx,0x2 int 0x10 jmp $ message db "hello os" times 510-($-$$) db 0 db 0x55,0xaa
#編譯匯編程序nasm-oprint.binprint.S#創建虛擬機鏡像qemu-imgcreate-frawvm1.raw1G#將編譯后的匯編程序寫入第一個扇區ddif=print.binof=vm1.rawbs=512count=1conv=notrunc#啟動虛擬機qemu-system-x86_64vm1.raw
啟動以后效果如下:

如何加載操作系統 已經講到了如何加載我們的操作系統,在加載操作系統是我們提到了主引導程序,上述代碼其實就是相當于MBR程序(但這里并不是去引導加載操作系統,只是在屏幕上打印一句話)。
BIOS在完成自檢等初始化操作以后,會跳轉到固定0x7c00處執行主引導程序,因此我們的代碼使用vstart=0x7c00來表明我的代碼會被初始化在內存的0x7c00處。
因此在我們啟動虛擬機后,BIOS完成操作以后會跳轉到我們的程序,CPU然后根據我們程序的指令執行,最終在屏幕打印了hello os。
3. 地址、vstart地址是源碼文件中各符號偏移文件開頭的距離,一般一個文件的默認開始地址為0。
我們的應用程序使用vstart以后,應用程序便被賦予了一個虛擬的起始地址,不管是虛擬地址還是真實地址,只要將這個地址交給了地址總線,地址總線便會去 查找該地址處的內容。因此如果在開發中使用了vstart,必須要保證程序會出現在物理內存的該地址處。
4. CPU工作原理CPU的工作模式分為實模式和保護模式,實模式的最大尋址空間為1M。關于實模式和保護模式在后續我們會講解。在介紹這兩種模式之前,我們還是先講CPU的工作原理。
CPU的唯一任務就是執行指令,在執行指令的過程中,需要CPU的是三個部件共同協作完成:
控制單元是CPU的核心,只有通過控制單元CPU才能知道自己下一步需要做啥,控制單元大致由三部分組成:
當我們的應用程序(也就是指令)被加載至內存以后,指令指針寄存器IP指向內存中下一條待執行的指令,該指令被送上地址總線以后,控制單元會獲取指令 然后將其加載到指令寄存器IR中,此時的指令只是一串數字和字母,CPU如果要知道其真正的執行含義必須借助指令譯碼器ID對這串數字和字母按照 指令的格式進行解碼分析。IA32(x86)指令格式如下:

前綴在指令格式中是可選模塊,操作碼對著我們應用程序中的mov,jmp等,尋址方式又分為基址尋址、變址尋址等(后續細講),操作數類型記錄的是 使用的寄存器。立即數和偏移量分別對應我們在尋址過程中用到的是立即數還是偏移量。
存儲單元是指CPU中的L1、L2緩存和寄存器,用于存儲指令中用到的數據。
在指令和數據都完善以后,控制單元中的操作控制器會給相關部件發送信號開始執行。

感謝閱讀,碼字不易,如果覺得還可以,順手“關注” “點贊”,這對我是最大的鼓勵!!
歡迎分享轉載→http://www.avcorse.com/read-253405.html
Copyright ? 2024 有趣生活 All Rights Reserve吉ICP備19000289號-5 TXT地圖HTML地圖XML地圖