计算机组成原理-指令系统-指令格式及寻址方式

news2024/10/6 8:28:14

目录

一、指令的定义

1.1 扩展操作码指令格式

 二、指令寻址方式

2.1 顺序寻址 

2.2 跳跃寻址

三、 数据寻址

 3.1 直接寻址

 3.2 间接寻址

 3.3 寄存器寻址

​ 3.4 寄存器间接寻址

 3.5 隐含寻址

3.6 立即寻址

 3.7 偏移地址

3.7.1 基址寻址

3.7.2 变址寻址

3.7.3 相对寻址

 2.8 堆栈寻址


一、指令的定义

指示计算机执行某种操作的命令,是计算机运行的最小功能单位(X86架构,ARM架构两种指令)

指令包含:操作码(OP)+地址码(A)

一条指令可能包含0个、1个、2个、3个、4个地址吗...

根据地址码数目划分为零地址指令、一地址指令、二地址指令、三地址指令、四地址指令......

1.1 扩展操作码指令格式

 设计扩展码指令格式时,必须注意两点:
         ①:不允许短码是长码的前缀。即短操作码不能与长操作码前面部分相同  (类似哈夫曼编码)

        ②:各指令操作码一定不能重复

        通常情况,对使用频率高的指令,分配较短操作码(地址码就长),频率低分配长操作码,从而尽可能减少指令译码和分析时间

另一种扩展码设计方法

 二、指令寻址方式

pc计数器:下一条欲执行指令的地址         

2.1 顺序寻址 

pc+1

2.2 跳跃寻址

 执行了转移指令,直接执行转移地址指向的指令

三、 数据寻址

 3.1 直接寻址

指令字中的形式地址A就是操作数的真实地址EA。即EA=A

指令执行过程:取指令访存1次,执行指令访存一次,暂不考虑存结果,共访存2次

 3.2 间接寻址

指令的地址字段给出的形式地址不是真实的地址,而是操作数有效地址所在的地址,也就是操作数地址的地址,即EA=(A)

 3.3 寄存器寻址

指令字中给的是操作数所在的寄存器编号,即EA=R_i,其操作数在由R_i所在寄存器中

 3.4 寄存器间接寻址

寄存器R_i给是不是一个操作数,而是主存单元的地址,即时EA=(R_i)       <上面2种寻址套娃>

 3.5 隐含寻址

不是明显给出操作数地址,而是指令中隐含操作数的地址

加法另一个操作数在ACC中

3.6 立即寻址

形式地址A就是操作数本身,又称立即数,一般补码形式

 3.7 偏移地址

3.7.1 基址寻址

以程序的起始存放地址作为起点        EA=(BR)+A

3.7.2 变址寻址

程序员自己决定从哪开始为起点        EA=(IX)+A

3.7.3 相对寻址

以程序计数器pc所指地址为起点        EA=(PC)+A

 2.8 堆栈寻址

操作数存放在堆栈中,隐含使用堆栈指针(SP)作为操作数地址

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/573608.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ICLR2023 | Mole-BERT: 对分子GNN预训练的反思

原文标题&#xff1a;MOLE-BERT: RETHINKING PRE-TRAINING GRAPH NEURAL NETWORKS FOR MOLECULES 原文链接&#xff1a;Mole-BERT: Rethinking Pre-training Graph Neural Networks for Molecules | OpenReview https://github.com/junxia97/Mole-BERT 一、Introduction At…

TreeMap(1):TreeMap介绍

1 TreeMap的特点 概念&#xff1a; TreeMap是一个双列集合&#xff0c;是Map的子类。底层由红黑树结构构成。 特点&#xff1a; 元素中键不能重复元素会按照大小顺序排序 2 TreeMap的数据结构 2.1二叉查找树 2.1.1二叉查找树的定义 特点&#xff1a; 若左子树不空&#…

分享五个前端WebGis地图框架(优缺点以及该如何选择)附地址

如何选择一个合适的前端GIS框架时&#xff0c;需要考虑以下几点&#xff1a; 1&#xff0c;功能和特性 前端GIS框架的主要目的是在 Web 环境下使用&#xff0c;以可视化地理数据。需要考虑所需功能和特性&#xff0c;例如应用需不需要数据编辑、地图标注、3D 可视化、如何实现…

五、Spring从入门到改行

一、Spring概述 Spring是一个轻量级的控制反转(IOC)和面向切面(AOP)的容器&#xff08;框架&#xff09;。 二、Spring基础程序 1、pom.xml中导入依赖 <dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifact…

【特征选择】基于二进制粒子群算法的特征选择方法(KNN分类器)【Matlab代码#28】

文章目录 【可更换其他算法&#xff0c;获取资源请见文章第5节&#xff1a;资源获取】1. 基于群智能算法的特征选择2. 二进制粒子群算法3. 部分代码展示4. 仿真结果展示5. 资源获取 【可更换其他算法&#xff0c;获取资源请见文章第5节&#xff1a;资源获取】 1. 基于群智能算法…

ollvm反混淆实战

[原创]记一次基于unidbg模拟执行的去除ollvm混淆-Android安全-看雪-安全社区|安全招聘|kanxue.com 参考上面的博客进行操作。这里记录操作细节 首先配置unidbg框架 git clone --recursive https://github.com/zhaoboy9692/unidbgweb.git 然后在unidbg-android中添加自定义类…

Vue3.x的设计理念-Vue3导读

目录 VUE-NEXT【vue3】 VUE-NEXT最核心的变更 Why not SFC&#xff1f;【单文件组件】 Composition API 生命周期钩子变化 什么是响应式&#xff08;Reactivity&#xff09; Reactive值 Proactive vs Reactive 声明式程序 声明式程序&#xff1a;创造语言 声明式程序…

MATLAB串口通信使STM32出现复位情况分析

前言 这几天&#xff0c;在使用matlab进行串口读取的操作&#xff0c;一次读几百个数据后&#xff0c;对数据进行操作分析&#xff0c;打印图片。但是遇到一个奇怪的问题&#xff0c;每次串口操作完毕后&#xff0c;STM32就会出现复位状况。 matlab串口操作 下面直接附上正常…

【特征选择】基于二进制蝗虫优化算法的特征选择方法(KNN分类器)【Matlab代码#29】

文章目录 【可更换其他算法&#xff0c;获取资源请见文章第5节&#xff1a;资源获取】1. 基于群智能算法的特征选择2. 二进制蝗虫优化算法3. 部分代码展示4. 仿真结果展示5. 资源获取 【可更换其他算法&#xff0c;获取资源请见文章第5节&#xff1a;资源获取】 1. 基于群智能算…

【社区图书馆】读《一本书读懂AIGC:ChatGPT、AI绘画、智能文明与生产力变革》所感

文章目录 《一本书读懂AIGC&#xff1a;ChatGPT、AI绘画、智能文明与生产力变革》目录作者简介我的体会&#xff1a; AI带来的挑战和机遇是不可避免的 《一本书读懂AIGC&#xff1a;ChatGPT、AI绘画、智能文明与生产力变革》 作者&#xff1a;a15a 著 贾雪丽 0xAres 张炯 主编 …

百度统计是什么?百度统计数据可以自动同步吗?

百度统计是什么&#xff1f; 百度统计是一款稳定、专业、安全的数据分析产品&#xff0c;提供数据看板、行为分析、用户管理、转化归因、营销管理、AB测试等多个板块的高阶分析能力&#xff0c;帮助提升客户各职能角色工作效能&#xff0c;以数据分析助力企业达成用户全生命周…

算法|5.快速排序相关

算法|5.快速排序相关 1.荷兰国旗问题 题意&#xff1a;给定一个数组arr&#xff0c;以arr[R]为划分值&#xff0c;请把arr[R]的数放在数组的左边&#xff0c;等于arr[R]的数放在数组的中间&#xff0c;大于arr[R]的数放在数组的右边&#xff0c;返回等于arr[R]的区间。要求额…

MSP432笔记8:定时器A_PWM驱动舵机

开发板型号&#xff1a;MSP432P401r 今日得以继续我的MSP432电赛速通之路&#xff0c;文首提供本次学习实践项目文件。 注&#xff1a;我笔记实践都是从原始空项目工程文件开始配置的。 有道是 —_—_—_—_— “山无重数周遭碧&#xff0c;花不知名分外娇” “曲…

Linux驱动入门(三)——源码下载阅读、分析和嵌入式文件系统介绍

文章目录 从内核出发获取内核源码使用Git安装内核源码使用补丁 阅读Linux内核源码Source Insight简介阅读源码 内核开发的特点无libc库抑或无标准头文件GNU C没有内存保护机制不要轻易在内核中使用浮点数容积小而固定的栈同步和并发可移植性的重要性 Linux源码分析Linux源码结构…

每日一题——用两个队列实现栈

每日一题 用两个队列实现栈 题目链接 思路 这里主要讲怎么实现出栈StackPop操作做完用两个栈实现队列&#xff0c;我们可能会想当然的认为&#xff0c;这一题也是一个主队列&#xff0c;一个辅助队列&#xff0c;当要出队时&#xff0c;首先判断辅助队列是否为空&#xff0c;…

代码线程安全

线程生命周期 synchronized synchronized会自动释放锁 synchronized同步代码块 synchronized后面括号里obj是锁对象(保证唯一)&#xff1b;static修饰的obj对象是自定义MyThread线程类的静态成员变量&#xff0c;该自定义线程类所有实例共享保证锁对象唯一性&#xff1b;另一…

广度优先搜索

注&#xff1a;最近有些事所以请大家原谅 那么废话讲完了┏ (゜ω゜)☞ 目录 一&#xff1a;认识广搜 广度优先搜索算法的搜索步骤一般是&#xff1a; 二&#xff1a;导入 广度优先搜索一般可以回答两类问题&#xff1a; 三&#xff1a;基础应用 例题1&#xff1a;寻宝…

Electron 入门案例详解

目录 前言一、开发环境检查二、入门案例实现1.初始化项目2.安装electron包3.运行electron应用 三、创建第一个应用窗口1.准备页面2.创建窗口3.运行窗口 总结 前言 Electron 是一种基于 Node.js 和 Chromium 的框架&#xff0c;可以方便地创建跨平台的桌面应用程序。虽然 Elect…

jlink-v8刷固件及解决keil报错 j-link is defective,j-link clone

今天在调试STM32F407的程序时&#xff0c;下载程序时突然keil识别不到jlink了&#xff0c;还以为是驱动的问题&#xff0c;重新装了好几次驱动&#xff0c;结果还是不行&#xff0c;于是就网上找各种办法&#xff0c;最后决定重新刷固件。网上的方法很多&#xff0c;好多都失败…

Kotlin Compose Multiplatform 跨平台(Android端、桌面端)开发实践之使用 SQLDelight 将数据储存至数据库

前言 关于标题和文章主题 取标题的时候我还在想&#xff0c;我应该写 Compose 跨平台呢还是写 Kotlin 跨平台。 毕竟对于我的整体项目而言&#xff0c;确实是 Compose 跨平台开发&#xff0c;但是对于我这篇文章要说的东西&#xff0c;那其实也涉及不到多少 Compose 相关的内…