指令系统(408)

一、拓展操作码指令格式

【2017 统考】某计算机按字节编址,指令字长固定且只有两种指令格式,其中三地址指令29条、二地址指令107条,每个地址字段6位,则指令字长至少应该是( A)

A、24位         B、26位        C、28位        D、32位

解析:

OP(5位)A1(6位)A2(6位)A3(6位)

三地址指令共29条,操作码\left \lceil log_{2}29 \right \rceil = 5位,留了32 - 29 = 3条操作码给二地址.

分别是 111101、111110、111111

此时的二地址位为3 * 2 ^ 6 = 192 > 107位,所以方案可行,所以指令字长为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位补码能表示的最小负数为 1 - 2^{15} 最大正数2^{15}

tips: n位补码能表示的最小负数  1- 2^{n-1}  ,最大正数2^{n-1}


2、基质寻址、大端存储

【2019统考】某计算机采用大端方式,按字节编址。某指令中操作数的机器数为1234 FF00H,该操作数采用基质寻址方式,形式地址(用补码表示)为FF12H,基址寄存器的内容为

F000 0000H, 则该操作数的LSB(最低有效字节)所在地址是(D)

A、F000 FF12H        B、F000 FF15H        C、EFFF FF12        D、EFFF FF15H

解析: 

大端存储:

FF12HFF13HFF14HFF15H
12H34HFFH00H

补码: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:

B​052H - 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

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

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

相关文章

Linux下的系统编程——进程间的通信(九)

一、进程间通信常用方式 IPC方式&#xff1a; Linux环境下&#xff0c;进程地址空间相互独立&#xff0c;每个进程各自有不同的用户地址空间。任何一个进程的全局变量在另一个进程中都看不到&#xff0c;所以进程和进程之间不能相互访问&#xff0c;要交换数据必须通过内核&am…

VIRTIO-BLK代码分析(4)VIRTIO设备中断的注入

VIRTIO设备中断包括vq中断和config中断。Vq中断用于通知Guest已完成数据的处理&#xff0c;虚拟机中可以完成IO请求。Vq中断的模拟是通过irqfd实现的&#xff0c;它将虚拟机中断与irqfd关联上&#xff08;KVM_SET_GSI_ROUTING和KVM_IRQFD&#xff09;&#xff0c;当虚拟机中访问…

绘制钻头芯厚变化图

import numpy as np import matplotlib.pyplot as plt posnp.array([0.05,0.5,0.97,3]) data_m1np.array([0.088,0.093,0.098,0.116]) data_m2data_m1-0.01 data_m3data_m1-0.02 fig plt.figure(figsize(5, 4)) plt.rcParams[xtick.direction] in # 将x周的刻度线方向设置向…

数据库 设计规范数据库设计样例

目录 5 数据库5.1 数据库命名规范5.2 数据库字段命名5.2.1 字段命名规范5.2.2 命名规范5.2.3 待优化命名示例5.2.4 字段类型规范5.2.5数据库中每个字段的规范描述 5.3表设计5.4 参考设计5.4.1 应用场景5.4.2 需求分析5.4.3 设计思路5.4.4 表结构设计5.4.5 缓存策略Q1 冗余设计和…

【HCIE】01.IGP高级特性

高级特性&#xff1a;一条命令解决一个问题 OSPF快速收敛机制 发生故障重新计算拓扑的过程叫做收敛&#xff0c;设备现在本身就是PRC算法和I-SPF算法 PRC&#xff08;针对叶子节点&#xff0c;叶子代表路由&#xff09; 不需要命令配置&#xff0c;就是ospf的特性&#xff…

RISC-V(2)——特权级及特权指令集

目录 1. 特权级 2. 控制和状态寄存器&#xff08;CSR&#xff09; 2.1 分类 2.2 分析 1. 特权级 一个 RISC-V 硬件线程&#xff08;hart&#xff09;是运行在某个特权级上的&#xff0c;这个特权级被编码到一个或者多个 CSR&#xff08;control and status register&a…

Java版企业电子招标采购系统源码Spring Cloud + Spring Boot +二次开发+ MybatisPlus + Redis

功能描述 1、门户管理&#xff1a;所有用户可在门户页面查看所有的公告信息及相关的通知信息。主要板块包含&#xff1a;招标公告、非招标公告、系统通知、政策法规。 2、立项管理&#xff1a;企业用户可对需要采购的项目进行立项申请&#xff0c;并提交审批&#xff0c;查看…

Vue + Element UI 前端篇(八):管理应用状态

使用 Vuex 管理应用状态 1. 引入背景 像先前我们是有导航菜单栏收缩和展开功能的&#xff0c;但是因为组件封装的原因&#xff0c;隐藏按钮在头部组件&#xff0c;而导航菜单在导航菜单组件&#xff0c;这样就涉及到了组件收缩状态的共享问题。收缩展开按钮触发收缩状态的修改…

postgresql 安装教程

postgresql 安装教程 本文以window 15版本为教程 文章目录 postgresql 安装教程1.下载地址2.以管理员身份运行3.选择安装路径&#xff0c;点击Next4.选择组件&#xff08;默认都勾选&#xff09;&#xff0c;点击Next5.选择数据存储路径&#xff0c;点击Next6.设置超级用户的…

指针和字符数组笔试题及其解析(第三组)

个人主页&#xff1a;Lei宝啊 愿所有美好如期而遇 第三组笔试题 char *p "abcdef";printf("%d\n", sizeof(p)); printf("%d\n", sizeof(p1)); printf("%d\n", sizeof(*p)); printf("%d\n", sizeof(p[0])); printf("%…

Android逆向学习(四)app修改smali函数跳过弹窗广告,等待广告,更新提醒

Android逆向学习&#xff08;四&#xff09;app修改smali函数跳过弹窗广告&#xff0c;等待广告&#xff0c;更新提醒 一、写在前面 这是吾爱破解课程的第三个练习&#xff0c;我在写这篇博客时遇到了vscode插件bug&#xff0c;已经想办法联系原作者了&#xff0c;希望能够尽…

Jmeter 三种提取方式 —— 关联实例

当请求之间有依赖关系&#xff0c;比如一个请求的入参是另一个请求返回的数据&#xff0c;这时候就需要用到关联处理 Jmeter中常用的关联方法&#xff1a; 正则表达式提取器、XPath提取器、JSON提取器​​​​​​ regex: (.*?)-(.*?)-(.*?)\n.: 匹配除换行符&#xff08;…

python实现对excel表中的某列数据进行排序

如下需要对webCms中的B列数据进行升序排序&#xff0c;且不能影响到其他列、工作表中的数据和格式。 import pandas as pd import openpyxl from openpyxl.utils.dataframe import dataframe_to_rows# 读取 Excel 文件 file_path 1.xlsx sheet_name webCms# 读取 Excel 文件并…

uniapp移动端地图,点击气泡弹窗并实现精准定位

记录移动端地图map组件的使用 需求记录&#xff1a; 移动端地图部分需要展示两个定位点&#xff0c;上报点及人员定位点。通过右上角的两个按钮实现地图定位。点击对应定位气泡&#xff0c;弹出定位点的信息。 效果图如下&#xff1a; map在nvue中的使用。直接用nvue可以直接…

JavaScript闭包漏洞与修补措施

请先看下面一段代码 var obj (function () {var sonObj {a: 1,b: 2}return {get: function (v) {return sonObj[v]}}})()可以看出,这是一段很典型的js闭包代码,可以通过obj调用get方法传一个参数,如果传的是a就可以得到闭包内的对象sonObj.a var obj (function () {var sonO…

edge浏览器无法登录账号!Microsoft 帐户无法登录!

种种原因&#xff0c;将笔记本重置了&#xff0c;重新下载装了系统&#xff0c;但是麻烦也来了&#xff0c;Microsoft 帐户无法登录&#xff01;edge浏览器无法登录账号&#xff0c;之前的保存的密码&#xff0c;加星的书签页同步不过去&#xff0c;这不完犊子了&#xff01;干…

Redis7入门概述

✅作者简介&#xff1a;大家好&#xff0c;我是Leo&#xff0c;热爱Java后端开发者&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f34e;个人主页&#xff1a;Leo的博客 &#x1f49e;当前专栏&#xff1a; Java从入门到精通 ✨特色专栏&#xf…

谈谈你的未来吧(励志成为CV算法工程师的第一天)

谈谈你的未来吧&#xff08;励志成为CV算法工程师的第一天&#xff09; 前言一、不知道该怎么选择的大一&#xff0c;大二二&#xff0c;好像知道未来路的大三三&#xff0c;谈谈博主我吧四&#xff0c;朝着一个方向前进吧 前言 仅以此篇记录我的学习经过&#xff0c;大家有什…

解决WebSocket通信:前端拿不到最后一条数据的问题

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

C# 子类如何访问子类的方法(同一父类)

在继承关系中&#xff0c;子类可以通过创建另一个子类的对象来访问其方法。下面是一个示例&#xff0c;展示了子类如何访问另一个子类的方法&#xff1a; public class Animal {public virtual void Speak(){Console.WriteLine("我是动物。");} }public class Cat :…