程式是一種相對於計算電路的一種升維或者說抽象,不需要在具體的運算中重新組合各種基本的電路,而是透過以電訊號表示的命令來控制電腦來執行,透過更改命令的執行順序來改變計算機的具體功能。這就是馮諾依曼儲存程式式體系:控制器,運算器,儲存器,輸入裝置,輸出裝置。具體的工作流程是1在控制器指揮下,從儲存器上取出指令;2分析指令,得到計算命令和待操作的數;3從儲存器上取出待計算的數放入運算器;4運算器計算結果;5輸出到儲存器或輸出裝置。
因此儲存器是關鍵。儲存器分為:暫存器(CPU內部,用於存放待運算元和結果);快取記憶體(通常在CPU內部,用做資料緩衝區);記憶體;外存。
接下來是具體的命令執行,這需要預先定義好CPU能執行的命令,即CPU的指令集,用來計算和控制計算機系統的一套指令的集合,典型的有Intel X86指令集和ARM指令集。具體的指令以二進位制碼錶示,包含一個或多個位元組,也包含指令碼(具體命令)和運算元(要操作的數或地址)。在具體的執行中,把宏觀層次的命令轉換為滿足指令集要求的二進位制程式碼,然後才能在計算機上執行;參見CPU的具體組成成分運算器 ALU和暫存器和控制器的工作流程。
最後程式的執行就是在以上基礎進行的,一開始使用機器語言的時候,具體的命令形式是1001010101010011 00011110這樣的。這個雖然足夠底層能夠直接與計算機進行互動,但不是一般人能夠搞得定的,於是就有更高層次的抽象,組合語言,變成add 0 1這種相對來說比較友好的語言;接著就是高階語言了,更加抽象,但接近我們一般人的思維習慣,如d = a*b+c;當然,這是前人的工作成果,他們把很多的細節封裝起來,我們這些後人之間呼叫就行,不用管其具體的轉換即具體的編譯,不然一句程式有可能轉換為多句指令,而且其執行的次序和次數之類的細節,各種記憶體地址和資料的呼叫足夠使人發瘋。
程式是一種相對於計算電路的一種升維或者說抽象,不需要在具體的運算中重新組合各種基本的電路,而是透過以電訊號表示的命令來控制電腦來執行,透過更改命令的執行順序來改變計算機的具體功能。這就是馮諾依曼儲存程式式體系:控制器,運算器,儲存器,輸入裝置,輸出裝置。具體的工作流程是1在控制器指揮下,從儲存器上取出指令;2分析指令,得到計算命令和待操作的數;3從儲存器上取出待計算的數放入運算器;4運算器計算結果;5輸出到儲存器或輸出裝置。
因此儲存器是關鍵。儲存器分為:暫存器(CPU內部,用於存放待運算元和結果);快取記憶體(通常在CPU內部,用做資料緩衝區);記憶體;外存。
接下來是具體的命令執行,這需要預先定義好CPU能執行的命令,即CPU的指令集,用來計算和控制計算機系統的一套指令的集合,典型的有Intel X86指令集和ARM指令集。具體的指令以二進位制碼錶示,包含一個或多個位元組,也包含指令碼(具體命令)和運算元(要操作的數或地址)。在具體的執行中,把宏觀層次的命令轉換為滿足指令集要求的二進位制程式碼,然後才能在計算機上執行;參見CPU的具體組成成分運算器 ALU和暫存器和控制器的工作流程。
最後程式的執行就是在以上基礎進行的,一開始使用機器語言的時候,具體的命令形式是1001010101010011 00011110這樣的。這個雖然足夠底層能夠直接與計算機進行互動,但不是一般人能夠搞得定的,於是就有更高層次的抽象,組合語言,變成add 0 1這種相對來說比較友好的語言;接著就是高階語言了,更加抽象,但接近我們一般人的思維習慣,如d = a*b+c;當然,這是前人的工作成果,他們把很多的細節封裝起來,我們這些後人之間呼叫就行,不用管其具體的轉換即具體的編譯,不然一句程式有可能轉換為多句指令,而且其執行的次序和次數之類的細節,各種記憶體地址和資料的呼叫足夠使人發瘋。