首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

計算機程序執行過程:從取指到執行的微操作分析

     編輯:關於C語言

計算機程序執行過程:從取指到執行的微操作分析

核心寄存器

  • PC (Program Counter):程序計數器,存放下一條指令地址
  • IR (Instruction Register):指令寄存器,存放正在執行的指令
  • AC (Accumulator):累加器,臨時數據存儲(算術邏輯運算結果)

指令格式

一條指令 = 操作碼 + 操作數
例:1940 → 操作碼1(LOAD),操作數940(內存地址)

指令週期:取指 + 執行

每條指令分兩階段:

  1. 取指階段:
     PC → MAR(內存地址寄存器) → 內存 → MDR(內存數據寄存器) → IR
     PC 自增(指向下一條)
  2. 執行階段:
     解碼 IR 中操作碼 → 控制單元發送微命令 → ALU運算/數據移動/跳轉

實例:執行 3 + 2

假設指令編碼:
1xxx = LOAD (從內存xxx載入AC)
2xxx = ADD (AC += 內存xxx)
3xxx = STORE (AC → 內存xxx)

程序碼(內存地址從300開始):

300: 1940  ; LOAD 940  (將內存940處的值3載入AC)
301: 2941  ; ADD  941  (AC += 內存941處的值2 → AC=5)
302: 3942  ; STORE 942 (將AC=5存入內存942)

微操作流程

步驟階段PCIRAC微操作描述
1取指3001940-PC(300)→MAR,內存[300]→MDR→IR,PC→301
2執行30119403解碼OP=1,ADDR=940→MAR,內存[940](3)→MDR→AC
3取指30129413PC(301)→MAR,內存[301]→MDR→IR,PC→302
4執行30229415解碼OP=2,ADDR=941→MAR,內存[941](2)→MDR,ALU: AC+MDR→AC
5取指30239425PC(302)→MAR,內存[302]→MDR→IR,PC→303
6執行30339425解碼OP=3,ADDR=942→MAR,AC(5)→MDR→內存[942]

關鍵洞察

  1. 取指與執行交替:現代CPU用流水線並行,但邏輯上仍是序列
  2. PC自增在取指階段:執行階段PC已指向下一條
  3. 操作數即內存地址:此為直接寻址,間接/寄存器/立即寻址同理
  4. AC是運算核心:所有算術邏輯運算隱含使用AC

總結

程序執行本質是取指→解碼→執行的無限循環。理解PC/IR/AC角色、指令格式、微操作流程,是掌握計算機組成原理、逆向分析、編譯器代碼生成的基石。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved