程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 匯編語言 >> 計算機系統原理(二) hello world程序的運行原理圖解

計算機系統原理(二) hello world程序的運行原理圖解

編輯:匯編語言

在寫本章的內容之前,LZ先做個小廣告。其實也不算是什麼廣告,就是LZ為了和各位猿友交流方便,另外也確實有個別猿友留言或者在博客裡發短消息給LZ要聯系方式。因此LZ斗膽建立了一個有關《深入理解計算機系統》這本書的交流群,當然了,如果有哪位猿友有其它方面的問題,也可以在群裡提出,如果LZ有能力幫忙的話會盡量幫助各位,倘若LZ能力不足,或許也會有其它猿友可以解答。

群號在文章裡就不貼了,有興趣的猿友可以看右側公告欄,歡迎各位大神、大牛、小牛、菜鳥踴躍加入。

hello world的執行

我們以linux系統為例,當我們執行一個簡單的打印字符串的C程序時,我們需要在命令行輸入./hello以及回車去執行該程序。在整個執行過程中,計算機主要做了三件事,或者說經歷了三個階段來完成程序的運行。

一、linux的外殼掃描用戶輸入的字符

當我們在鍵盤輸入./hello時,linux的外殼程序(也就是命令行)會掃描我們輸入的字符,將這些字符一一讀入到寄存器當中,然後再一一放入主存。換句話說,./hello這幾個字符是經過了CPU中的寄存器從而到達了主存。下面LZ將這一過程的圖示畫出來。

查看本欄目

三、根據主存中代碼的指令執行程序

在代碼以及程序所需要的數據加載到主存後,CPU就開始從main函數的起始位置,依次執行代碼中的指令。由於我們的代碼只是簡單的輸出“hello world”這樣的字符串,因此系統只是將這個字符串依次加載到寄存器,然後傳輸到顯示器終端顯示。這個過程如下圖。

本章小結

本章只是簡單的介紹了一下hello程序的執行過程,我們可以簡單的這麼理解,hello程序的執行,其實就是將數據和代碼加載到主存,並由CPU從主存獲取指令從而執行的過程。

作者:zuoxiaolong(左潇龍)

出處:博客園左潇龍的技術博客--http://www.cnblogs.com/zuoxiaolong

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved