程序編譯


https://www.bilibili.com/video/BV1UV411B7qU?p=7 筆記編程


程序的本質

  • 編譯器 將 程序代碼 轉化成 CPU 指令/機器碼;
  • 指令裝載到內存中;
  • CPU 讀取/寫入 內存;
  • CPU 控制計算機的硬件

CPU 中比較重要的組成編程語言

  • 寄存器,信息存儲
  • 運算器,信息處理
  • 控制器,控制其餘器件進行工做

內存 & 寄存器

內存和寄存器均可以用來存放東西,可是寄存器就在 CPU 裏面,CPU 訪問它更快。ide

內存和寄存器調用示例:
數據的計算操作系統

int a = 1;
int b = a + 1

a, b 都存在內存中,數據會送到寄存器進行計算(+1),而後返回內存。code


程序語言的發展

  1. 機器語言
  2. 彙編語言
  3. 高級語言
  • 彙編語言 和 機器語言 是一一對應的,每一條 機器指令 都有與之對應的 彙編指令;
  • 彙編 經過 編譯 獲得 機器語言,機器語言經過 反彙編 獲得彙編語言;
  • 高級語言能夠經過編譯獲得彙編語言\機器語言,但彙編語言\機器語言幾乎不可能還原成高級;
  • 高級語言不能直接訪問寄存器;

編程語言的本質區別

JS/PHP 代碼最終會轉化爲機器碼,但看不到這個機器碼;引擎屏蔽了這些細節。
Java 會轉化爲字節碼,由 JVM 裝載blog

  • 編譯型語言
    - C / C++ / OC / Swift
    - 容易被反彙編內存

  • 編譯型語言(依賴虛擬機)
    - Java / Ruby
    - Java 由 JVM 進行裝載字節碼
    - 虛擬機能夠看作是小型操做系統get

  • 腳本語言
    - Python / JS / PHP
    - PHP 由ZE(Zend Engine)進行解析編譯器


編譯語言要求所有都對才能執行;
腳本語言是一行一行去掃描執行,某一行出錯,前面會繼續執行,後面不會。效率比編譯語言低,由於是運行時來處理。虛擬機

相關文章
相關標籤/搜索