指令系统(408)
一、拓展操作码指令格式
【2017 统考】某计算机按字节编址,指令字长固定且只有两种指令格式,其中三地址指令29条、二地址指令107条,每个地址字段6位,则指令字长至少应该是( A)
A、24位 B、26位 C、28位 D、32位
解析:
OP(5位) | A1(6位) | A2(6位) | A3(6位) |
三地址指令共29条,操作码位,留了32 - 29 = 3条操作码给二地址.
分别是 111101、111110、111111
此时的二地址位为位,所以方案可行,所以指令字长为5 + 3 * 6 = 23位,因为按字节编址,所以取8的整数倍等于24位。
tips:三地址的位数决定着操作码最短位数
二、指令寻址方式
1、偏移量
【2014统考】某计算机有16个通用寄存器,采用32位定长指令字,操作码字段(含寻址方式位)为8位,Store指令的源操作码和目的操作数分别采用寄存器直接寻址和基质寻址方式。若基质寄存器可使用任一通用寄存器,且偏移量用补码表示,则Store指令中偏移量的取值范围是(A)
A、-32768~+32767 B、-32767~+32768
C、-65536~+65535 D、-65535~+65536
解析:
(本题考查数据表示和指令系统)
共32位
操作码:8位
寄存器直接寻址:4位
寄存器基址寻址:4位 + x位(偏移量) 8 + 4 + 4 + x =32 解得x = 16 位
16位补码能表示的最小负数为 最大正数
tips: n位补码能表示的最小负数 ,最大正数
2、基质寻址、大端存储
【2019统考】某计算机采用大端方式,按字节编址。某指令中操作数的机器数为1234 FF00H,该操作数采用基质寻址方式,形式地址(用补码表示)为FF12H,基址寄存器的内容为
F000 0000H, 则该操作数的LSB(最低有效字节)所在地址是(D)
A、F000 FF12H B、F000 FF15H C、EFFF FF12 D、EFFF FF15H
解析:
大端存储:
FF12H | FF13H | FF14H | FF15H |
12H | 34H | FFH | 00H |
补码:FF12H 原码:00EEH
基址寻址: EA = (R) + A
**形式地址R是无符号数,但偏移量(R)是有符号数,原数是负的,所以这里要减去原码**
F000 0000H - 00EEH = F000 0000H + [-0000 00EEH]补 = F000 0000 + FFFF FF12H
=EFFF FF12H,所以,所在的地址为EFFF FF15H
tips:大端存储是顺着,小端则是逆着存
3、地址格式
【2020统考】某计算机采用16位定长指令字格式,操作码位数和寻址方式位数固定,指令系统有48条指令,支持直接、间接、立即、相对4种寻址方式。在单地址指令中,直接寻址方式的可寻址范围是(A)
A、0~255 B、0~1023 C、-128~127 D、-512 ~ 511
解析:
*寻址方式位 2位
*操作码位数固定,所以48条指令需要6位操作码
地址位 16 - 6 - 2 = 8 位 地址是无符号数,大于0排除C、D,8位二进制数所能表示的最大正数= 2^8 - 1 = 255
4、
(1)操作码 4位 ,共16条指令。(操作码位数决定了指令条数)
(Ms/Md,这是Ms或Md)操作数位寻址方式位:3位,所以Rs/Rd位:3位,共2^3 = 8 个寄存器。
MAR : 字长16位 = 2B,128KB / 2B = 2^16,所以16位 (MAR:地址范围,主存的容量决定了地址的范围)
MDR = 机器字长16位(MDR:数据大小)
(2)寄存器字长16位,PC的地址范围0 ~ 2^16 - 1,Rn可表示的相对偏移量(有符号数)为-2^15 ~ 2^15 - 1,而主存地址空间为2^16,所以转移指令的目标地址范围为0000H ~ FFFFH(0~2^16 -1 )
(3)
寄存器间接寻址:Ms = 001 寄存器间接、自增: Md = 010
机器码:0010 001 100 010 101B (通过题目寻址方式,寄存器号码得出机器码)
执行结果:R5发生变化,先执行加法操作,5678H + 1234H = 68ACH,后进行自增。
执行后:R5、5678H的存储单元发生变化
R5中的内容:5678H 变为 5679H 【(R5) + 1 —— R5:带括号的是地址指向的地址的内容5678H,不带括号的是该地址】
存储单元5678H:变为该结果68ACH
1)按字节编址,8位补码能表示的最大负数为1-2^7,最多跳转2^7 - 1条指令。
2)
200CH + 2 + 2 * (- 29) = 0001 1111 1110 0100(A—B = A + B补)
200CH + 2 = 0010 0000 0000 1110
3)C = 1 , Z = 1 , N = 1
4)1:指令寄存器,存放指令
2:移位寄存器,左移一位
3:加法器,与PC + 2相加(上面的加法器是用来PC + 2)
1)16位,2^20字节;指令寄存器16位,MAR:20位,MDR:8位
2)R:0000~1111,2^4种,I:2^6 - 1种,J:2^6 - 1种。通用寄存器4个(前6位全0的编码已被R型格式占用,所以减少一种)
3)01B2H = 0000 0001 1011 0010B 带符号数减法,将1号寄存器中的内容减2号寄存器中的内容得到的结果放到3号寄存器中。R[3] <—— R[1] - R[2]。
01B2H:
B052H - 0008H = B04AH
01B3H:
B052H * 0008H = 8290H,溢出(8290 < B052)
4)符号拓展,imm为带符号整数,可以向前或向后偏移,所以需要符号拓展
5)J型
1)CISC,因为指令种类多,指令字长不定
2)0040107F - 00401020 + 1= 60H = 6 * 16 + 0 = 96B
3)CF = 1,i = 0000 0000H n - 1 = FFFF FFFFH,0减FFFF FFFF就等于0000 0001H,此时进位C = 0,借位CF = 1
4)不能,浮点数左移和定点数的左移不同,浮点数左移包含了阶码的左移,最后达不到乘2的结果。
1)10次,call f1,第十六行
2)条件转移指令:第12行;第16行,第20行,第30行都一定会跳转执行
3)第17行:第16行占了5个字节(E8 D6 FF FF FF),0040 102AH
call的偏移量:00401025 - 00401000 = 25H,向后偏移,FFFF FFD6H
小端方式
4)发生了溢出,超过了int所能表示的最大范围,把int都改成longlong。
5)乘积的高33位为非全0或非全1,则OF = 1.编译器应在imul指令后加一条"溢出自陷指令"。当OF=1时,调用"溢出异常处理"
1)因为页大小4KB,虚拟地址的高20位是虚拟页号,第一行和第三十行的高20位相同,所以在同一页。
2)64 / 4 = 16组,则组号4位,主存块64B,块内地址6位,头22位是tag位,中间4位是组号,末6位是块内地址。
3)0040 1025H,中间4位0000,低6位 10 0101,组号为0
相关文章:

指令系统(408)
一、拓展操作码指令格式 【2017 统考】某计算机按字节编址,指令字长固定且只有两种指令格式,其中三地址指令29条、二地址指令107条,每个地址字段6位,则指令字长至少应该是( A) A、24位 B、26位 …...

Pygame中Trivia游戏解析6-3
3.3 Trivia类的show_question()函数 Trivia类的show_question()函数的作用是显示题目。主要包括显示题目框架、显示题目内容和显示题目选项等三部分。 3.3.1 显示题目的框架 在show_question()函数中,通过以下代码显示题目的框架。 print_text(font1, 210, 5, &q…...

热释电矢量传感器设计
1 概述 使用4个热释电传感器组成一个2X2的矩阵。通过曲线的相位差、 峰峰值等特征量来计算相关信息。本文使用STM32单片机设计、制作了热释电传感器矩阵;使用C#.NET设计了上位机软件。为以上研究做了试验平台。 2 硬件电路设计 2.1 热释电传感器介绍 热释电红外…...
MySql学习笔记10——视图介绍
视图 概述 view view可以看作是一张“虚拟表”,(但是他也是会作为文件存在的) 当我们通过复杂的查询语句获取一张表的时候,可以将这张表作为一个视图,和创建一个新表不同,在视图上进行的DML操作会对数据…...

【探索Linux】—— 强大的命令行工具 P.7(进程 · 进程的概念)
阅读导航 前言一、冯诺依曼体系结构二、操作系统(OS)1. 概念 三、进程1. 进程的概念2. PCB(Process Control Block)3. 查看进程 四、fork函数1. 函数简介2. 调用方式3. 返回值4. 使用示例 五、进程的几种状态1. 状态简介2. 进程状…...

JAVA宝典----容器(理解记忆)
目录 一、Java Collections框架是什么? 二、什么是迭代器? 三、Iterator与ListIterator有什么区别? 四、ArrayList、Vector和LinkedList有什么区别? 五、HashMap、Hashtable、TreeMap和WeakHashMap有哪些区别? 六…...
JS中的扩展操作符...(点点点)
标题 前言概述拓展操作符(Spread Operator)赋值与扩展操作符的区别 剩余操作符(Rest Operator) 前言 大家应该都在代码中用过或者看到…方法,我每次用到这个方法的时候都会想到第一次见到这个方法一头雾水的样子&#…...

找redis大key工具rdb_bigkeys
github官网 https://github.com/weiyanwei412/rdb_bigkeys 在centos下安装go [roothadoop102 rdb_bigkeys-master]# wget https://dl.google.com/go/go1.13.5.linux-amd64.tar.gz [roothadoop102 rdb_bigkeys-master]# tar -zxf go1.13.5.linux-amd64.tar.gz -C /usr/local将g…...

ElasticSearch进阶
一、 search检索文档 ES支持两种基本方式检索; 通过REST request uri 发送搜索参数 (uri 检索参数);通过REST request body 来发送它们(uri请求体); 1、信息检索 API: https://w…...

Nor flash 页写地址与数据大小的限制
厂商提供的flash手册如下 如果页写指令的地址不是256的整数倍,并且写入的数据量超过了当前地址所在页的边界,则超过的那些数据会重新写入当前页的首地址(即256的整数倍地址),所以,在进行页写的时候&#x…...

python 深度学习 解决遇到的报错问题4
目录 一、DLL load failed while importing _imaging: 找不到指定的模块 二、Cartopy安装失败 三、simplejson.errors.JSONDecodeError: Expecting value: line 1 column 1 (char 0) 四、raise IndexError("single positional indexer is out-of-bounds") 五、T…...

C到C++的升级
C和C的关系 C继承了所有C语言的特性;C在C的基础上提供了更多的语法和特性,C语言去除了一些C语言的不好的特性。C的设计目标是运行效率与开发效率的统一。 变化一:所有变量都可以在使用时定义 C中更强调语言的实用性,所有的变量…...

《热题101》动态规划篇
思路:需要一个二维数组dp来记录当前的公共子序列长度,如果当前的两个值等,则dp[i][j]dp[i-1][j-1]1,否则dp[i][j] max(dp[i-1][j],dp[i][j-1])。也就是说,当前的dp值是由左、上、左上的值决定的。获得dp数组之后,倒序…...

【综述+3D】基于NeRF的三维视觉2023年度进展报告(截止2023.06.10)
论文:2003.Representing Scenes as Neural Radiance Fields for View Synthesis 官方网站:https://www.matthewtancik.com/nerf 突破性后续改进: Instant Neural Graphics Primitives with a Multiresolution Hash Encoding | 展示官网&#…...

基于JavaScript粒子流动效果
这是一个HTML文件,主要包含了一些CSS样式和JavaScript代码,用于创建一个动画效果。 在CSS部分,定义了一些基本的样式,包括页面的背景颜色、位置、大小等。特别的,定义了两种球形元素(.ball_A 和 .ball_B&am…...

【U盘】实现U盘清空并重置恢复存储
打开电脑,将U盘插入USB端口,点按快捷键【WinR】,弹出运行对话框,输入命令 diskpart 进入命令提示符窗口 输入指令 list disk 查看现在的硬盘 这里显示的U盘编号是“1”,因此输入select disk “1”,就是选择…...

基于Hugo 搭建个人博客网站
目录 1.环境搭建 2.生成博客 3.设置主题 4.将博客部署到github上 1.环境搭建 1)安装Homebrew brew是一个在 macOS 操作系统上用于管理软件包的包管理器。类似于centos下的yum或者ubuntu下的apt,它允许用户通过命令行安装、更新和管理各种软件工具、…...

Springboot + Sqlite实战(离线部署成功)
最近有个需求,是手机软件离线使用, 用的springboot mybatis-plus mysql,无法实现,于是考虑使用内嵌式轻量级的数据库SQLlite 引入依赖 <dependency><groupId>org.xerial</groupId><artifactId>sqlite-…...
【后量子密码】CRYSTALS-KYBER 算法(一):MLWE 问题与NTT(附源码分析)
一、前言 大多数基于数论的密码学,如Diffie-Hellman协议和RSA加密系统,依赖于大整数因子分解或特定群的离散对数等困难问题。然而,Shor 在1997年给出了对所有这些问题的高效量子算法,这将使得基于数论的密码系统在未来量子计算机时代变得不安全。相比之下,目前对于格密码…...
VTK——angleWidget的3D转换
文章目录 3D空间坐标转换例程心得 3D空间坐标转换 在冠状图、矢状面、横截面等创建的角度组件的三个端点坐标,不能直接用在3D视图中。这是因为2D切片的坐标是基于像素的,而3D空间的坐标可能是基于实际物理尺寸的。 解决方案是使用2D点的坐标、切片的物理…...

日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻
在如今就业市场竞争日益激烈的背景下,越来越多的求职者将目光投向了日本及中日双语岗位。但是,一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧?面对生疏的日语交流环境,即便提前恶补了…...
在Ubuntu中设置开机自动运行(sudo)指令的指南
在Ubuntu系统中,有时需要在系统启动时自动执行某些命令,特别是需要 sudo权限的指令。为了实现这一功能,可以使用多种方法,包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法,并提供…...
JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案
JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停 1. 安全点(Safepoint)阻塞 现象:JVM暂停但无GC日志,日志显示No GCs detected。原因:JVM等待所有线程进入安全点(如…...

算法笔记2
1.字符串拼接最好用StringBuilder,不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...

C++使用 new 来创建动态数组
问题: 不能使用变量定义数组大小 原因: 这是因为数组在内存中是连续存储的,编译器需要在编译阶段就确定数组的大小,以便正确地分配内存空间。如果允许使用变量来定义数组的大小,那么编译器就无法在编译时确定数组的大…...
【JavaSE】多线程基础学习笔记
多线程基础 -线程相关概念 程序(Program) 是为完成特定任务、用某种语言编写的一组指令的集合简单的说:就是我们写的代码 进程 进程是指运行中的程序,比如我们使用QQ,就启动了一个进程,操作系统就会为该进程分配内存…...

什么是VR全景技术
VR全景技术,全称为虚拟现实全景技术,是通过计算机图像模拟生成三维空间中的虚拟世界,使用户能够在该虚拟世界中进行全方位、无死角的观察和交互的技术。VR全景技术模拟人在真实空间中的视觉体验,结合图文、3D、音视频等多媒体元素…...

MySQL的pymysql操作
本章是MySQL的最后一章,MySQL到此完结,下一站Hadoop!!! 这章很简单,完整代码在最后,详细讲解之前python课程里面也有,感兴趣的可以往前找一下 一、查询操作 我们需要打开pycharm …...
WEB3全栈开发——面试专业技能点P7前端与链上集成
一、Next.js技术栈 ✅ 概念介绍 Next.js 是一个基于 React 的 服务端渲染(SSR)与静态网站生成(SSG) 框架,由 Vercel 开发。它简化了构建生产级 React 应用的过程,并内置了很多特性: ✅ 文件系…...

构建Docker镜像的Dockerfile文件详解
文章目录 前言Dockerfile 案例docker build1. 基本构建2. 指定 Dockerfile 路径3. 设置构建时变量4. 不使用缓存5. 删除中间容器6. 拉取最新基础镜像7. 静默输出完整示例 docker runDockerFile 入门syntax指定构造器FROM基础镜像RUN命令注释COPY复制ENV设置环境变量EXPOSE暴露端…...