標籤:
電腦是如何工作的
姓名:高藝桐
學習資源:《Linux核心分析》MOOC課程http://mooc.study.163.com/course/USTC-1000029000
一、儲存程式電腦工作的模型
馮諾依曼體繫結構換句話講為儲存程式電腦模型。
(1)從硬體角度
CPU和記憶體間通過匯流排串連,CPU內的IP寄存器分為16bit 32bit 64bit,CPU從IP指向的記憶體位址取指令執行,IP自加一,取下一條指令再執行。
(2)從程式員角度
CPU內進行for迴圈執行指令,與記憶體間通過匯流排串連。
ABI:程式與CPU的介面介面
EPI:自加一,執行下一條指令
二、X86 彙編基礎
2.1 X86 CPU寄存器
(1)通用寄存器
註:開頭為E的寄存器為32位寄存器 EBP堆棧基寄存器 ESP堆棧頂寄存器
(2)段寄存器
註:CS-程式碼片段寄存器 SS-堆棧寄存器
CPU實際取指令 CS:eip來確定位一個指令
(3)標誌寄存器:標誌當前的一個位置
2.2 X86 64位寄存器
32位與64位核心機制上差別不大。開頭帶R的指64位寄存器
(1)通用寄存器
2.3 mov指令及幾種定址方式
(1)mov指令
註:movb代表8位,movw代表16位.movl代表32位,movq代表64位。
寄存器模式,以%開頭的寄存器標示等。
movl %eax ,%edx 將eax賦值給edx 寄存器定址
movl &ox123,%edx 123的16進位數放入edx 立即定址
movlx ox123%,%edx 16進位123所指的記憶體資料放入edx 直接定址(直接存取一個指定的記憶體位址資料)
movlx (%ebx),%edx 將寄存器的值直接作為記憶體位址訪問 間接定址
movlx 4(%ebx),%edx 在間接定址的基礎上改變寄存器的數值 變址定址
2.4幾種重要的彙編指令
三、分析實驗樓中的代碼
3.1進入實驗樓進行實驗 如下
註:
cd Code 進行下載
i為插入模式 esc退出插入
刪除整行以點開頭的代碼用dd組合刪除,留下純彙編代碼
3.2進行程式碼分析
四、總結
通過本次對Linux課程的學習,我瞭解到了電腦通過CPU中的寄存器讀取指令進行工作,並掌握了簡單的彙編指令,比如mov指令,push指令,pop指令,ret指令,leave指令等,通過對程式碼片段的深入理解對以上指令又進行了鞏固和提高,領悟了這些指令的異同,比如pop指令和push指令,push指令先進行%esp的減,再進行賦值;而pop指令先進行%esp的加,再將esp記憶體位址進行賦值。這些細節概念稍有疏忽,結果就會的大有不同。在日後的學習中,定要更加註意細節,完善自我。在實驗樓的實驗中,因為第一次接觸Linux語言,所以在代碼的粘貼步驟出現了問題,後來通過請教同學瞭解到了輸入i進入插入模式,進行粘貼,esc鍵退出粘貼模式,讓我受益匪淺。
在日後對Linux課程的學習過程中,我定會更加的用心,細心,耐心,注重複習和鞏固,養成良好的學習習慣。
電腦是如何工作的