1. 程式人生 > >程式是怎麼跑起來的? —— CPU 是什麼?C/C++程式的執行

程式是怎麼跑起來的? —— CPU 是什麼?C/C++程式的執行

1. 概念初步

  • 程式:計算機的程式,和做飯、運動會的程式一樣,指的是“做事的先後次序”;
  • 程式的組成:程式是指令(及物動詞)和資料(賓語)的組合體;
    • C 語言 printf("hello\n");,這個簡單的程式,printf是指定,hello是資料;
  • 機器語言:CPU 能夠直接識別和執行的只有機器語言。
    • 使用C、C++、Java 等高階語言編寫的程式最後都會轉化為機器語言;
  • 正在執行的程式儲存在什麼位置?
    • 硬碟和磁碟等媒介上儲存的程式被複製到記憶體(記憶體中是其副本)後才能執行;
  • 記憶體地址:標記和指定命令和資料的場所;
    • 地址由整數值表示;
  • CPU 的作用:
    • 根據程式的指令來進行資料運算,並控制整個計算機的裝置;

2. CPU 是什麼?

CPU 負責的就是解釋和執行最終轉換成機器語言的程式內容;

CPU 和 記憶體(memory)是由許多電晶體組成的電子部件,通常稱為 IC(Integrated Circuit,積體電路);

CPU 的組成(各部分之間的電訊號相互流通):

  • 暫存器;

    暫存指令,資料等處理物件;可將暫存器看做記憶體的一種;根據種類的不同,一個 CPU 內部會有 20~100 個暫存器;

  • 控制器;

    控制器負責把記憶體上的指令、資料等讀入暫存器,並根據執行的結果來控制整個計算機。

  • 運算器:運算器負責運算從記憶體讀入暫存器的資料。

  • 時鐘:負責發出 CPU 開始計時的時鐘訊號;

    • Pentium 2GHz 就表示時鐘訊號的頻率為 2GHz

3. C++程式的執行

生成一個 C++ 程式共有三個步驟:

  • ①預處理:程式碼在前處理器中執行,前處理器會處理程式碼中的元資訊(meta-information)
    • 預處理指令以 # 字元開始,#include <iostream> 就是如此,本例中,include 指令是告訴前處理器,提取 iostream 標頭檔案中的所有檔案內容並提供給當前檔案,
    • 當然標頭檔案最常見的用途是宣告在其他地方定義的函式;
  • ②編譯:程式碼被編譯為計算機可以識別的目標檔案;
  • ③連結:獨立的目標檔案連結在一起形成一個應用程式;

相關推薦

定位Java程式中佔用cpu資源最多執行

在程式設計時,有時候有些問題並不會暴露出來,往往等專案上線之後,突然就暴露出一些問題,比如網站相應慢,或者突然崩潰。 當然,網站相應慢可能是多方面的原因,硬體、軟體、cpu,io,網路都是可能的點。 本篇文章從cpu角度來分析佔用cpu最多執行緒從而導致網站

macOS使用ABP.vNext Core開發CMS系統(一) 讓程式起來

macOS使用ABP.vNext Core開發CMS系統(一) 讓程式跑起來——2020年10月5日 國慶假期,陪老婆的同時也不能忘記給自己充充電,這不想搞個CMS系統,考慮自己的時間並不多,所以想找一套相對成熟的框架來快速開發,碼雲上找了幾個開源專案,感覺都是別人的東西,機緣巧合下,決定使用之前一直沒時間用

macOS使用ABP Core免費模板開發CMS系統(一) 讓程式起來

macOS使用ABP Core免費模板開發CMS系統(一) 讓程式跑起來——2020年10月5日 國慶假期,陪老婆的同時也不能忘記給自己充充電,這不想搞個CMS系統,考慮自己的時間並不多,所以想找一套相對成熟的框架來快速開發,碼雲上找了幾個開源專案,感覺都是別人的東西,機緣巧合下,決定使用之前一直沒時間用的A

程式是怎麼起來的? —— CPU 是什麼?C/C++程式執行

1. 概念初步 程式:計算機的程式,和做飯、運動會的程式一樣,指的是“做事的先後次序”; 程式的組成:程式是指令(及物動詞)和資料(賓語)的組合體; C 語言 printf("hello\n");,這個簡單的程式,printf是指定,hello是資料; 機

Visual Studio 2013執行C/C++程式

0 前言 開始學習C/C++了,肯定首先要找一個能執行程式的軟體,很多人都有不同的推薦,如devc++、codeblocks,VC++6.0,Visual Studio 20XX,我們本科學習資料結構時候,老師推薦的就是VC6.0,這個是比較經典的工具吧。我個人感覺Visual Studio

linux下C開發多執行程式

轉:https://blog.csdn.net/lingfemg721/article/details/6574804   linux下用C開發多執行緒程式,Linux系統下的多執行緒遵循POSIX執行緒介面,稱為pthread。   #

C# winform程式以管理員執行

一,選擇專案工程,右鍵 - 新增 - 新建項 - 應用程式清單檔案(字尾名為manifest) - 新增; 二,開啟剛新建的應用程式清單檔案(app.manifest),修改程式碼如下: 找到requestedExecutionLevel,將屬性級別的值修改為:requireAdminist

C/C++】程式中如何執行作業系統命令?

   在我們編寫C或者C++程式時候,有時候會碰到要求執行作業系統命令或者其他應用程式,同時要麼需要獲取命令執行的輸出,要麼不需要獲取命令執行的輸出,針對這兩點,我分別各介紹一方式   1:  方法一: system 函

編寫一個程式,啟動三個執行緒,三個執行緒的名稱分別是 A,B,C; 每個執行緒將自己的名稱在螢幕上列印5遍,列印順序是ABCABC...

設定標誌位flag 當flag==1時,列印A 當flag==2時,列印B 當flag==3時,列印C 用count控制列印的次數,題目要求列印5遍,即15個字元 這裡的用notifyAll()的原因:是要把其餘兩個全都喚醒,因為如果用notify

使用Notepad++編譯執行C/C++/Python程式

對我來說,比較常用的是C/C++/Python。 使用Notepad++編譯執行單個原始檔的C/C++/Python,比使用複雜的IDE更加快捷。 想要讓Notepad++能夠做到編譯執行C/C++/Python程式,你需要: 0. 準備好編譯器 C/C++編譯器,這裡推薦MinGW:https://

C/C++程式CPU問題分析

轉載地址:http://www.10tiao.com/html/473/201606/2651473094/1.html   程式的CPU問題是另外一類典型的程式效能問題,很多開發人員都受到過程式CPU佔用過高的困擾。本次我們收集了14個CPU類的問題,和大家一起分析下這些問題的種類和原因。另外,對於C/C

如何在Visual C++下除錯執行C程式

  本文轉載自網際網路,如有侵權,請聯絡我及時刪除。謝謝。   從2008年4月開始,全國計算機等級考試將全面停止Turbo C2.0(簡稱TC)軟體的使用,所有參加二級C語言、三級資訊科技、網路技術和資料庫技術上機考試的考生,都要在Visual C++6.0(簡稱VC)環

在Linux(Ubuntu16.04)下編寫執行C語言程式

       最初學習C語言用的是Visual C++6.0,後來還用過一些IDE,複製貼上都可以用滑鼠對目標進行選擇即可。但在Linux系統裡,需要熟練掌握在Terminal裡編寫C語言程式,進行編譯除錯。本章

在命令列執行C++程式帶來的思考(C++學習筆記 26)

我的電腦是Win10 x64位,裝有編譯程式的軟體有CodeBlocks和Dev-C++。 我想用windows的cmd命令列來帶引數地進行編譯C++程式碼。但是網上說下載MinGw,但這個MinGw是幹什麼用的? 首先了解以下概念: IDE: 整合開發環境(IDE,Integr

Xcode編譯c/c++檔案後生成的可執行程式位置

當我們用xcode編譯c/c++程式時,可以在xcode裡面直接編譯執行,但是我們想在命令列中執行可執行程式,就像在linux下怎麼辦。我們就需要去找到生成的可執行檔案。 生成的可執行程式位置在 xcode---preferences---locations 在De

C++小知識(八)——C/C++執行外部程式(呼叫外部exe程式

轉載自:https://blog.csdn.net/dongpanshan/article/details/7835722,其中我只用到了ShellExecute函式,根據下面的示例以及介紹的其中的引數進行了調整,實現了對外部exe的呼叫 C中的函式: 1.exec()

C語言程式執行

vs2013編輯器c程式的執行一、啟動Microsoft Visual C++ 2013版、新建專案 。 檔案——> 新建——> 專案。 2.確定之後 彈出新建專案對話方塊。選擇模板——>Win32——>Win32控制檯應用程式——>

c/c++ 一條語句中包含多個i++時程式執行情況

今天覆習高精度時,遇到了個小坑,於是試驗了下。 #include<iostream> using namespace std; int main() { int i = 1; int a[8] = {0, 1, 2, 3, 4, 5, 6, 7};//別忘

C#獲取程式執行路徑的幾種方法

通過控制檯程式打印出每種方法的結果 static void Main(string[] args) { Console.WriteLine("typeof(Program).Assembly.Location:\r\n{0}",

C++】如何執行C++程式

Linux下編譯C++程式時,gcc命令也可以使用,不過要增加-lstdc++選項,否則會發生連結錯誤。例如編譯單個原始檔: gcc main.cpp -lstdc++ 編譯多個原始檔: gcc main.cpp module.cpp -lstdc++ 不過 GCC