“C語言” 讀書札記(四)之[再續編譯執行]


 
介紹
 
  上一篇a.out(hello,world程序)執行之后發生了什么?這次通過系統硬件和操作做粗略的描述,這樣對我們也是有一些幫助的。
 
  如果中間若有誤,請不吝賜教。
 
 從鍵盤上讀取a.out命令
 
  當我們打開我們的終端的時候,shell程序會執行它的指令,等待我們的輸入。
  當我們在鍵盤上輸入"a.out",敲回車時,shell就知道我們結束了命令的輸入。然后shell的指令就會逐一讀取目標文件a.out的代碼和數據到寄存器,再把代碼和數據拷貝到主存儲器。
                                  流程圖如下

                                  那么在硬件中是如何奔跑的呢?
 

 

科普普及:

1、主存用來存放指令和指令處理的數據。

2、處理器(CPU的簡稱)是解釋(或執行)存儲在主存中指令的引擎。在任何一個時間點上,CPU中的PC(程序計數器)都指向主存中的某條機器語言指令。

 3、有一種DMA(直接存儲器存取)技術,數據可以不通過處理器而直接從磁盤到達主存儲器。

 

從存儲器寫輸出串到顯示器
 
 1、 一旦a.out目標文件中的代碼和數據被加載到了主存儲器,CPU就開始執行 main.c程序的主程序中機器語言指令。
 2、 這些指令將"hello,world\n"串中的字節從主存儲器中拷貝到寄存器文件。
 3、 再從寄存器中文件拷貝到顯示設備,最終顯示在屏幕上。
 
流程圖:
  

                                   那么這些在硬件中是如何奔跑的呢?
 
 
 

總結
 
從兩個角度分析上面的問題:
  機器指令:最初是在磁盤上——》(程序加載時)拷貝到主存——》(處理器運行指令時)從主存拷貝到處理器。
  數據串:最初是在磁盤上——》拷貝到主存——》顯示設備。
 
參考文獻:
《深入理解計算機系統》
 
推薦
 
 
 
 
 
 
 
 
 
 
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM