26-計組-尋址方式

指令尋址與PC自增

一、指令尋址方式

定義:尋找下一條將要執行的指令地址的過程。
核心部件:程序計數器(PC),用于指示待執行指令的地址。
執行流程

  1. CPU根據PC值從主存取指令。
  2. 取指后,PC自動自增,指向下一條指令。
  3. 跳轉指令會修改PC為目標地址,打破順序執行。

1. PC自增規則

PC自增取決于主存編址方式指令字長

  • 按字節編址
    • 指令字長=1字節:PC = PC + 1
    • 指令字長=4字節:PC = PC + 4
  • 按字編址(假設字長=4字節):
    • 指令字長=4字節:PC = PC + 1(以字為單位)

  • 關鍵點:PC自增在取指階段完成后執行,確保指向下一條指令。

2. 跳轉指令

  • 特點:PC不按順序自增,而是修改為跳轉目標地址。
  • 示例:當前PC=100,指令為“跳轉到當前地址+3”,PC改為103。
  • 常用尋址:相對尋址,EA = (PC) + A(PC已自增,A為相對位移量)。
    • 8位補碼A的尋址范圍:(PC) - 128 ~ (PC) + 127
  • 執行流程
    1. 取指:從PC地址讀取跳轉指令。
    2. PC自增:按指令字長自增。
    3. 計算目標地址(EA):根據尋址方式(如相對尋址)。
    4. 修改PC:PC = EA,下一條指令從EA取指。


二、數據尋址方式

定義:尋找指令中操作數的真實地址(有效地址EA)。
指令格式:|操作碼OP|尋址特征|形式地址A|
核心:形式地址A不一定是EA,需通過尋址特征轉換。

1. 立即尋址

  • 特點:A為操作數本身(立即數,補碼形式)。
  • 優點:無需訪存,速度快。
  • 缺點:A位數限制立即數范圍。
  • 格式:|OP|立即尋址特征|立即數A|

2. 直接尋址

  • 特點:A即EA(EA=A)。
  • 優點:簡單,執行階段只需訪存一次。
  • 缺點:A位數限制尋址范圍,修改地址需改A。
  • 格式:|OP|直接尋址特征|A|

3. 隱含尋址

  • 特點:操作數地址隱含在操作碼或寄存器(如ACC)中。
  • 優點:縮短指令字長。
  • 缺點:需額外硬件存儲隱含地址。
  • 示例:一地址加法指令,ACC作為第二操作數。

4. 間接尋址

  • 特點:A指向操作數地址的地址。
    • 一次間接:A → 主存 → EA → 操作數
    • 二次間接:A → 主存 → 中間地址 → EA → 操作數
  • 優點:擴大尋址范圍(EA位數 > A位數)。
  • 缺點:多次訪存,效率低。

5. 寄存器尋址

  • 特點:A為寄存器編號,操作數在寄存器中(EA=Ri)。
  • 優點:無需訪存,速度快。
  • 缺點:寄存器資源有限且昂貴。
  • 格式:|OP|寄存器尋址特征|Ri|

6. 寄存器間接尋址

  • 特點:寄存器Ri存儲操作數的主存地址(EA=(Ri))。
  • 優點:比間接尋址少一次訪存。
  • 執行:訪問Ri取地址,再訪存取操作數。
  • 格式:|OP|寄存器間接尋址特征|Ri|

7. 基址尋址

  • 特點:EA = A + (BR),BR為基址寄存器。
  • 關鍵
    • BR由OS管理,用戶不可修改。
    • 支持多道程序設計和內存保護。
    • 程序可浮動(通過修改BR)。
  • 分類
    • 隱式:專用BR寄存器。
    • 顯式:通用寄存器指定。

8. 變址尋址

  • 特點:EA = A + (IX),IX為變址寄存器。
  • 與基址尋址區別
    • IX用戶可修改,A固定。
    • BR由OS管理,A用戶可修改。
  • 應用:數組處理,A為數組首地址,IX修改訪問不同元素。

9. 相對尋址

  • 特點:EA = (PC) + A,PC為下一條指令地址(已自增)。
  • 應用:轉移指令,A為相對位移量(補碼)。
  • 尋址范圍(8位A):(PC) - 128 ~ (PC) + 127
  • 格式:|OP|相對尋址特征|A|


三、總結

  • PC自增:按指令字長和編址方式(PC+1或PC+n)。
  • 跳轉指令:修改PC為目標地址,常用相對尋址(EA=(PC)+A)。
  • 尋址方式
    1. 立即:操作數在指令中。
    2. 直接:A為操作數地址。
    3. 隱含:地址隱含在操作碼/寄存器。
    4. 間接:A為地址的地址。
    5. 寄存器:操作數在寄存器。
    6. 寄存器間接:寄存器存操作數地址。
    7. 基址:EA=A+(BR),OS管理BR。
    8. 變址:EA=A+(IX),用戶改IX。
    9. 相對:EA=(PC)+A,PC已自增。

示例分析

假設:

  • 按字節編址,指令字長=4字節,當前PC=100。
  • 跳轉指令(相對尋址),A=3。
  1. 取指:讀取PC=100的指令。
  2. PC自增:PC = 100 + 4 = 104。
  3. 計算EA:EA = 104 + 3 = 107。
  4. 修改PC:PC = 107,下一指令從107取。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/90826.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/90826.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/90826.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

生成式對抗網絡(GAN)模型原理概述

生成對抗網絡(Generative Adversarial Network, GAN)是一種通過對抗訓練生成數據的深度學習模型,由生成器(Generator)和判別器(Discriminator)兩部分組成,其核心思想源于博弈論中的零…

Vue和Element的使用

文章目錄1.vue 腳手架創建步驟2.vue項目開發流程3.vue路由4.Element1.vue 腳手架創建步驟 創建一個文件夾 vue雙擊進入文件夾,在路徑上輸入cmd輸入vue ui, 目的:調出圖形化用戶界面點擊創建 9. 10.在vscode中打開 主要目錄介紹 src目錄介紹 vue項目啟動 圖形化界面中沒有npm…

如何設置直播間的觀看門檻,讓直播間安全有效地運行?

文章目錄前言一、直播間觀看門檻有哪幾種形式?二、設置直播間的觀看門檻,對直播的好處是什么三、如何一站式實現上述功能?總結前言 打造一個安全、高效、互動良好的直播間并非易事。面對海量涌入的觀眾,如何有效識別并阻擋潛在的…

【SkyWalking】配置告警規則并通過 Webhook 推送釘釘通知

🧭 本文為 【SkyWalking 系列】第 3 篇 👉 系列導航:點擊跳轉 【SkyWalking】配置告警規則并通過 Webhook 推送釘釘通知 簡介 介紹 SkyWalking 告警機制、告警規則格式以及如何通過 webhook 方式將告警信息發送到釘釘。 引入 服務響應超時…

關于 驗證碼系統 詳解

驗證碼系統的目的是:阻止自動化腳本訪問網頁資源,驗證訪問者是否為真實人類用戶。它通過各種測試(圖像、行為、計算等)判斷請求是否來自機器人。一、驗證碼系統的整體架構驗證碼系統通常由 客戶端 服務端 風控模型 數據采集 四…

微服務集成snail-job分布式定時任務系統實踐

前言 從事開發工作的同學,應該對定時任務的概念并不陌生,就是我們的系統在運行過程中能夠自動執行的一些任務、工作流程,無需人工干預。常見的使用場景包括:數據庫的定時備份、文件系統的定時上傳云端服務、每天早上的業務報表數…

依賴注入的邏輯基于Java語言

對于一個廚師,要做一道菜。傳統的做法是:你需要什么食材,就自己去菜市場買什么。這意味著你必須知道去哪個菜市場、怎么挑選食材、怎么討價還價等等。你不僅要會做菜,還要會買菜,職責變得復雜了。 而依賴注入就像是有一…

skywalking鏡像應用springboot的例子

目錄 1、skywalking-ui連接skywalking-oap服務失敗問題 2、k8s環境 檢查skywalking-oap服務狀態 3、本地iidea啟動服務連接skywalking oap服務 4、基于apache-skywalking-java-agent-9.4.0.tgz構建skywalking-agent鏡像 4.1、Dockerfile內容如下 4.2、AbstractBuilder.M…

3. java 堆和 JVM 內存結構

1. JVM介紹和運行流程-CSDN博客 2. 什么是程序計數器-CSDN博客 3. java 堆和 JVM 內存結構-CSDN博客 4. 虛擬機棧-CSDN博客 5. JVM 的方法區-CSDN博客 6. JVM直接內存-CSDN博客 7. JVM類加載器與雙親委派模型-CSDN博客 8. JVM類裝載的執行過程-CSDN博客 9. JVM垃圾回收…

UnityShader——SSAO

目錄 1.是什么 2.原理 3.各部分解釋 2.1.從屏幕空間到視圖空間 2.2.以法線半球為基,獲取隨機向量 2.3.應用偏移,并將其轉換為uv坐標 2.4.獲取深度 2.5.比較并計算貢獻 2.6.最后計算 4.改進 4.1.平滑過渡 4.2.模糊 5.變量和語句解釋 5.1._D…

【設計模式】外觀模式(門面模式)

外觀模式(Facade Pattern)詳解一、外觀模式簡介 外觀模式(Facade Pattern) 是一種 結構型設計模式,它為一個復雜的子系統提供一個統一的高層接口,使得子系統更容易使用。 外觀模式又稱為門面模式&#xff0…

【6.1.1 漫畫分庫分表】

漫畫分庫分表 “數據量大了不可怕,可怕的是不知道如何優雅地拆分。” 🎭 人物介紹 架構師老王:資深數據庫架構專家,精通各種分庫分表方案Java小明:對分庫分表充滿疑問的開發者ShardingSphere師傅:Apache S…

Tomcat問題:啟動腳本startup.bat中文亂碼問題解決

一、問題描述 我們第一次下載或者打開Tomcat時可能在控制臺會出現中文亂碼問題二、解決辦法 我的是8.x版本的tomcat用notepad打開:logging.properties 找到:java.util.logging.ConsoleHandler.encoding設置成GBK,重啟tomcat即可

Linux中Gitee的使用

一、Gitee簡介:Gitee(碼云)是中國的一個代碼托管和協作開發平臺,類似于GitHub或GitLab,主要面向開發者提供代碼管理、項目協作及開源生態服務。適用場景個人開發者:托管私有代碼或參與開源項目。中小企業&a…

Oracle大表數據清理優化與注意事項詳解

一、性能優化策略 1. 批量處理優化批量大小選擇: 小批量(1,000-10,000行):減少UNDO生成,但需要更多提交次數中批量(10,000-100,000行):平衡性能與資源消耗大批量(100,000行):適合高配置環境,但需監控資源使…

Anaconda及Conda介紹及使用

文章目錄Anaconda簡介為什么選擇 Anaconda?Anaconda 安裝Win 平臺macOS 平臺Linux 平臺Anaconda 界面使用Conda簡介Conda下載安裝conda 命令環境管理包管理其他常用命令Jupyter Notebook(可選)Anaconda簡介 Anaconda 是一個數據科學和機器學…

外包干了一周,技術明顯退步

我是一名本科生,自2019年起,我便在南京某軟件公司擔任功能測試的工作。這份工作雖然穩定,但日復一日的重復性工作讓我逐漸陷入了舒適區,失去了前進的動力。兩年的時光匆匆流逝,我卻在原地踏步,技術沒有絲毫…

【QT】多線程相關教程

一、核心概念與 Qt 線程模型 1.線程與進程的區別: 線程是程序執行的最小單元,進程是資源分配的最小單元,線程共享進程的內存空間(堆,全局變量等),而進程擁有獨立的內存空間。Qt線程只要關注同一進程內的并發。 2.為什么使用多線程…

VS 版本更新git安全保護問題的解決

問題:我可能移動了一個VS C# 項目,然后,發現里面的git版本檢測不能用了 正在打開存儲庫: X:\Prj_C#\3D fatal: detected dubious ownership in repository at X:/Prj_C#/3DSnapCatch X:/Prj_C#/3D is owned by:S-1-5-32-544 but the current …

Git常用命令一覽

Git 是基于 Linux內核開發的版本控制工具。與常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本庫的方式,不必服務器端軟件支持(ps:這得分是用什么樣的服務端,使用http協議或者git協議等不太一樣。并且在…