回覆列表
  • 1 # 使用者7018245495583

    你的c語言被編譯器編譯成組合語言,最後又被變成01指令。這些指令一條一條放在記憶體裡。可以小端放可以大端放,可以高位交叉放,也可以低位交叉放,總之被安排在記憶體裡。

    然後需要告訴cpu開始的位置。由CPU裡面一個叫PC的暫存器負責。PC會自動增一,儲存了下一條指令的地址。每次執行完,把PC地址指的指令做下一條執行。

    你的cpu出廠被設計了可以允許一些指令。比如什麼RISC和CISC,每個指令有操作碼和運算元。知道操作碼和運算元就可以執行這個指令。比如操作碼是對應加減之類,運算元可以是數本身,也可以是存數的記憶體地址,也可以存記憶體地址的記憶體地址,也可以是存記憶體地址的暫存器的地址。

    CPU從開始位置一條一條指令執行假如沒有跳轉。控制具體運算的資料通路是由控制器CU。控制器根據時序和IR裡的指令來控制每個機器週期做什麼。

    一般每個指令週期有被分成取指令,間址、執行、和處理中斷。

    下面以add (r0) + r1 -> r0為例子 具體圖不畫了,暫存器和記憶體直接有匯流排相連線。

    一、取指令

    (PC) -> MAR 送下一條指令的地址

    M(MAR) -> MDR 把記憶體對應地址內容送到CPU裡的暫存器

    MDR -> IR 送到指令暫存器

    IR 譯碼 指令暫存器送給CU譯碼

    二、間址取r0

    (r0) -> MAR 送r0中的地址給暫存器

    M(MAR) -> MDR -> ACC 取到累加器

    三、執行

    ACC + r0 -> ALU -> ACC 透過ALU運算

    ACC -> r0 儲存結果到暫存器

    譯碼部分可以透過邏輯電路,也可以透過微指令,微指令可以理解為把譯碼部分提前存起來用的時候直接從ROM裡面讀出來就知道具體邏輯。

    你學玩計算機組成原理後保證就懂了✓機組挺有意思的。計算機的專業課會安排。我學化工的,我在車間三班倒開閥門空隙裡自己看書學的。

  • 中秋節和大豐收的關聯?
  • 電梯更換鋼絲繩的標準是什麼,更換步驟有?