【计算机组成原理与体系结构】指令系统

news2024/11/26 13:52:58

目录

一、指令格式

二、扩展操作码

三、指令寻址

四、数据寻址

五、x86汇编指令

六、RISC-V架构

七、RV32I指令集


一、指令格式

根据地址码格式分类

 

根据操作类型进行分类

二、扩展操作码

三、指令寻址

指令寻址:下一条预执行指令的地址(始终有程序计数器PC给出)

顺序寻址方式:PC + "1" -> PC,此处的 “1” 代表一个指令字长

跳跃寻址方式:当程序顺序执行遇到转移指令时,PC就不再是+“1”,而是由本条转移指令的地址码字段给出的跳跃地址,或者由指令的地址码字段经过相对寻址方式计算得出跳跃后的新指令地址,按该地址去取下一条指令。

四、数据寻址

数据寻址:确定本条指令的地址码指明的真实地址

立即寻址

直接寻址

 缺点:A的位数限制了该指令操作数的寻址范围,操作数的地址不易修改。

间接寻址

寄存器寻址

寄存器间接寻址

隐含寻址

基址寻址

优点:便于程序“浮动”,方便实现多道程序并发运行。

基址寄存器存放了程序的起始位置,由os管理,其内容无法被程序员修改。

变址寻址

基址变址寻址

在指令中指定一个基址寄存器和一个变址寄存器,指令中的地址码给出位移量。有效地址由基址寄存器、变址寄存器中的值和位移量三者相加而成。

相对寻址

堆栈寻址

        

数据寻址方式总结:

五、x86汇编指令

x86CPU的寄存器

算术运算指令

逻辑运算指令

转移指令

循环控制指令

 

函数调用指令

六、RISC-V架构

CISC与RISC对比

RISC-V指令集概述

RV32I通用寄存器堆

RV32I指令格式

立即数生成规则

七、RV32I指令集

10条R型运算指令:Register

  • 功能:对寄存器数据进行算术逻辑运算,运算结果写入目的寄存器

9条I型运算指令:Immediate

  • 功能:对寄存器与扩展后立即数进行算术逻辑运算,将结果写入目的寄存器

2条U型数据处理指令:大立即数指令

  • lui:load upper immediate
  • auipc:add upper immediate to pc

5条I型装数指令:Load from Memory

  • lb:load byte
  • lh:load half word
  • lw:load word
  • lbu:load byte unsigned
  • lhu:load half word unsigned
  • 功能:从存储器读出数据装入寄存器

3条S型存数指令:Store to Memory

  • sb:store byte
  • sh:store half word
  • sw:store word
  • 功能:将寄存器数据写入cunchuq

 

2条J型/I型跳转并链接指令

  • jal:jump and link
  • jalr:jump and link-rs1 

6条B型条件分支指令:转移控制

  • beq:branch if equal
  • bne:branch if not equal
  • blt:branch if less then
  • bge:branch if great or equal
  • bltu:branch if less then-unsigned
  • bgeu:branch if great or equal-unsigned

2条存储器屏障指令

6条系统指令

2条断点指令

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

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

相关文章

chatgpt赋能python:Python如何从右往左取数

Python如何从右往左取数 在Python编程中,有时候需要从右往左获取列表、字符串等数据结构的元素,而不是从左往右。这样做的好处在于可以更快地访问最后几个元素,或者进行一些反向操作。本文将介绍Python中从右往左取数的方法。 索引与切片 …

【DC综合】DC工具 report_timing 命令的一些选项

report_timing选项 report_timing 的全部参数[ -to to_list | -rise_to rise_to_list | -fall_to fall_to_list ][ -from from_list | -rise_from rise_from_list | -fall_from fall_from_list ][ -path_type short | full | full_clock | full_clock_expanded | only | end ][…

智能工厂元宇宙 工业互联网云平台的架构与功能解析

随着工业领域的数字化转型和物联网技术的发展,工业互联网云平台作为实现智能制造和工业自动化的关键技术之一,引起了广泛关注。工业互联网云平台通过将传感器数据、设备状态和生产信息等连接到云端,实现数据的采集、存储、分析和应用&#xf…

chatgpt赋能python:Python中如何一行输入多个数据

Python中如何一行输入多个数据 在Python中,我们有时需要一次性输入多个数据,作为程序的输入。常见的情况包括输入一组数字、输入多个字符串等。在本文中,我们将介绍多种方法来实现一行输入多个数据。 方法一:使用input函数 Pyt…

IP组播5_PIM-SM(ASM)详解

目录 1.PIM-SM(ASM)简介 2.PIM-SM(ASM)工作原理 2.1 什么是DR? 2.2 什么是RP? 2.2.1 静态RP 2.2.2 动态RP 2.3 组播源注册和RPT建立 2.4 SPT切换 3. PIM-SM(ASM)实验 3.1 …

【力扣刷题 | 第五天】

目录 前言: 15. 三数之和 - 力扣(LeetCode) 18. 四数之和 - 力扣(LeetCode) 结束: 前言: 今天两道题类型相似,解法思路一致,都利用了双指针技术。 15. 三数之和 - 力…

PostgreSQL数据库分区裁剪——enable_partition_pruning

在PostgreSQL 10版本之前,PostgreSQL数据库实际上是没有单独的创建分区表的DDL语句,都是通过表继承的原理来创建分区表,这样使得在PostgreSQL中使用分区表不是很方便,到PostgreSQL 10之后,PostgreSQL扩展了创建表的DDL…

idea插件开发-PSI

程序结构接口(Program Structure Interface)简称PSI,PSI是IDEA插件开发最复杂的一块内容,后续会有大量实战来强化理解此处的知识。PSI是IntelliJ 平台中的一个层,负责解析文件并创建语法和语义代码模型,为平…

Linux 导入MySQL数据库(四)

文章目录 一、导出数据库二、导入数据库(方法一)1. 通过FinalShell连接服务器,登录mysql:2. 新建数据库3. 使用新建的数据库4. 对数据库进行编码设置5. 从路径中导入 SQL 文件数据 三、导入数据库(方法二)【…

为uni-cloud(Dcloud国产之辉)声明!

目录 uni-cloud的介绍 uni-cloud与uni-app的关系 uni-cloud与云原生的关系 uni-cloud的开发优点 uni-cloud与HBuilder X结合的优越性 uni-cloud高效解决"高并发" uni-cloud与阿里云、腾讯云完美结合 uni-cloud背后庞大的插件市场 美中不足 加油&#xff01…

chatgpt赋能python:Python代码保存:如何保存你的Python代码?

Python代码保存:如何保存你的Python代码? Python被广泛认为是学习编程的入门语言之一,因为它易于学习和使用,并且拥有大量的库和框架来处理各种任务。 在编写Python代码时,你可能会像大多数编程任务一样,…

实践项目三: 校园兼职平台(合作重构版)

项目说明 1 据了解,目前在校大学生80%以上有做兼职的需求,兼职打工已经不仅仅是经济困难的学生赚取生活费用的途径。调查显示,全球经济危机对就业产生冲击,用人单位对人员的社会实践能力要求提高,大学期间必要的社会实…

Java学习笔记(StringJoiner和集合)

StringJoiner StringJoiner与StringBuilder一样,也可以看成是一个容器,创建之后的内容是可变的 作用:提高字符串的操作效率,而且代码编写特别简洁,但是目前市场上很少有人用 构造方法: 方法名 说明 pub…

四、HAL_驱动机械按键

1、开发环境。 (1)KeilMDK:V5.38.0.0 (2)STM32CubeMX:V6.8.1 (3)MCU:STM32F407ZGT6 2、机械按键简介 (1)按键内部是机械结构,也就是内部是没有电路的。按键按下内部引脚导通,松开内部断开。 3、实验目的&原理…

Git、Github、Gitee的区别

⭐作者主页:逐梦苍穹 ⭐所属专栏:Git 目录 1、Git2、Gitee3、GitHub 什么是版本管理?   版本管理是管理各个不同的版本,出了问题可以及时回滚。 1、Git Git是一个分布式版本控制系统,用于跟踪和管理代码的变化。它是…

开源代码分享(2)—综合能源系统零碳优化调度

参考文献: Optimal dispatch of zero-carbon-emission micro Energy Internet integrated with non-supplementary fired compressed air energy storage system | SGEPRI Journals & Magazine | IEEE Xplore 1.引言 全球能源危机和环境污染的双重压力促使能量…

mysql 删表引出的问题

背景 将测试环境的表同步到另外一个数据库服务器中,但有些表里面数据巨大,(其实不同步该表的数据就行,当时没想太多),几千万的数据!! 步骤 1. 既然已经把数据同步过来的话&#x…

chatgpt赋能python:Python怎么从1加到100

Python怎么从1加到100 Python是一种面向对象的编程语言,随着人工智能和大数据技术的流行,Python也变得越来越受欢迎。Python有很多优点,其中之一就是易于学习和使用。在这篇文章中,我们将介绍如何用Python从1加到100。 前置知识…

还在为浏览量焦虑吗?为何不用R语言来做归因分析找出痛点

一、引言 大家好,我是一名博客作者,同时也是一个有着浏览量焦虑症的患者。每次发一篇新的博客文章,我总是不停地刷新页面,看看有多少人来访问、阅读和留言。当发现访问量不如自己预期时,我就会有一种被冷落、被忽视的…

【DFT】MBIST (1) MBIST基础

MBSIT基础 1. 存储器测试2. 存储器结构3. 存储器故障模型3.1 固定故障(SAF)3.2 转换故障(TF)3.3 耦合故障(CF)3.4 桥接和状态耦合故障 4. 功能测试方法4.1 March 测试算法4.2 March-C 算法4.3 MATS 算法4.4 其他的 March 测试 5. MBSIT方法5.1 简单的 March MBIST1. 简单的Marc…