Linux學習之路一計算機是如何工作的

2021-09-25 01:30:32 字數 1425 閱讀 3007

初次接觸mooc課堂,裡面有個很牛x的老師教linux,恰好自己有興趣學,顧有了此系列學習博文。

第一講   計算機是如何工作的

學習linux,涉及到了c語言和彙編以及作業系統的知識,顧第一講要講講彙編的知識,c和作業系統知識自行複習。以下知識都是at&t彙編的知識,可能與intel彙編有些不同。

知識一:

知識二:

有這些知識差不多就能看懂彙編了。現在給乙個簡單的c程式,main.c,然後讓它編譯成匯程式設計序,得到main.s。

實驗執行環境:實驗樓64位linux虛擬機器

1int g(intx)2

56int f(intx)7

1011

int main(void)12

編譯命令為:gcc –s –o main.s main.c -m32 (其中-m32是將**編譯為32位的意思,因為該命令是在實驗樓64位linux虛擬機器環境下使用的,32位linux環境可能會稍有不同)。

以下是main.s**,共25行。需要說明的是,編譯後會出現很多以「.」開頭的語句,這些都是起連線作用的,實際上是不執行的語句,顧可以把它們刪除,得到純淨的彙編**,如下:

接下來就是分析了。

從main函式開始。

18行,將%ebp壓棧(其中%esp的值會自動減4,因為pushl操作等價於2行**,可參考知識二);

19行,將%esp的值給%ebp,形成棧中棧的結構。(其中18,19行**就是enter操作)

20行,21行,就相當於將888入棧。

22行,呼叫f()函式,首先將%eip入棧,然後將f()的位址賦值給%eip(說明:%eip所指的值為下一條**執行的位址,所以將f()函式的位址給%eip,那下一次就會執行f()函式)。

18行--22行中的棧的內容的變化如下圖

後續**的棧變化類似,入棧、出棧、入棧、出棧……在此就不多加累贅了。

總結:對於計算機是如何工作的,首先是將高階語言轉換成組合語言,接著將組合語言理解成入棧、出棧操作。整個計算機的工作就是由不斷的入棧,不斷的出棧,外加一些簡單的加減等操作所構成的。

註明:部落格署名:***

linux學習一《計算機概論》

1 cpu的頻率 指cpu每秒鐘可以進行的工作次數。2 cpu的外頻和倍頻 外頻指cpu和外部元件進行資料傳輸 運算時的速度,倍頻指cpu內部用來加速工作效能的乙個倍數,兩者相乘才是cpu的頻率!3 南橋北橋 北橋負責連線速度較快的cpu 記憶體和顯示卡等元件,南橋負責連線比較慢的周邊介面,如硬碟 ...

一 計算機概覽

一 計算機概覽 阿蘭 麥席森 圖靈 alan mathison turing 6月23日生於英國倫敦。是英國著名的數學家和邏輯學家,被稱為電腦科學之父 人工智慧之父,是計算機邏輯的奠基者,提出了 圖靈機 和 圖靈測試 等重要概念,人們為紀念其在計算機領域的卓越貢獻而設立 圖靈獎 1 計算機五大組成部...

一 計算機系統漫遊

可執行目標檔案,可載入到記憶體中 匯流排 連線系統各部分傳遞資訊 定長位元組塊,即 字 的電子管道 i o裝置 通過控制器或介面卡與i o匯流排相連 主存 臨時儲存,存放程式和資料,乙個線性的位元組陣列 處理器 處理指令集 os主要功能 1.防止硬體被失控的應用程式濫用 2.為應用程式提供簡單一致的...