第二章:指令:计算机的语言(防遗忘)

这篇具有很好参考价值的文章主要介绍了第二章:指令:计算机的语言(防遗忘)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

概念

指令:计算机硬件所能理解并服从的命令。

存储程序概念:多种类型的指令和数据均以数字形式存储于存储器中的概念。

:计算机中的基本访问单位,通常是32位为一组,在MIPS体系结构中与寄存器大小相同。

数据传送指令:在存储器和寄存器之间移动数据的命令

地址:用于在存储器空间中指明某特定数据元素位置的值

对齐限制:数据地址与存储器的自然边界对齐的要求

程序计数器(PC):包含在程序中正在被执行指令地址的寄存器

基本块:没有分支(可能出现在末尾者除外)并且没有分支目标/分支标签(可能出现在开始者除外)的指令序列

一、数字特征

1个字=     个字第二章:指令:计算机的语言(防遗忘)

MIPS指令集:

①按字节编址。 一个字4个字节,一个字节8bit。

②寄存器大小为32位

③地址值为32位

④采用大端编址

数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址中

第二章:指令:计算机的语言(防遗忘)

二、指令的基本结构

R型指令:

第二章:指令:计算机的语言(防遗忘)

 rd是目的寄存器

如:算术运算指令、逻辑操作

补码运算

add、sub、sll(逻辑左移)、and、or、slt(set on less than 小于则置位)

add $t0,$s0,$s1//$t0是目的寄存器

sub $t0,$s0,$s1//$t0是目的寄存器

sll  $t0,$s0,4 //$t0是目的寄存器

and $t0,$t1,$t2//$t0是目的寄存器

slt  $t0,$s3,$s4 //$t0是目的寄存器

I型指令:

第二章:指令:计算机的语言(防遗忘)

rt是目的寄存器 

立即数指令(addi)、数据传送指令(lw、sw)

注意16位立即数为有符号补码,进行计算时需要先进行符号扩展,此指令认为寄存器内的数据也为补码形式。由于这里是有符号数,所以没有subi指令.

决策指令(beq、bne)

PC相对寻址,这里的地址为字地址,需要将16位地址乘以4,得到18位的字节地址,再进行相加。这里同样是有符号数的补码形式,需要进行符号扩展。并且相对偏移的对象为PC+4

立即数逻辑操作指令(ori、andi)、取立即数高位指令(lui):

逻辑操作的立即数是通过变成32位数的低十六位,而高十六位补0形成的“无符号数”进行运算的;lui指令是直接把constant字段放入寄存器的高十六位,低十六位补0

lw $t0,23($s0) //$t0是目的寄存器

sw $t0,43($s0) //$t0是目的寄存器

beq $t0,$t1,L1//$t0和$t1地位等价

bne $t0,$t1,L1//$t0和$t1地位等价

addi $s3,$s0,4 //$s3是目的寄存器

J型指令:

 第二章:指令:计算机的语言(防遗忘)

无条件跳转 jump指令

PC+4的高四位与 Jump指令的立即数*4 的28位进行拼接。

基址寄存器:

g=h+A[8] ,其中变量h的值存放在$s2中,变量g的值存放在$s1中

编译为:

lw $t0,32($s3)

add $s1,$s2,$t0

$s3存放数组的首地址,即$s3为基址寄存器,32位偏移量,认为该数组的每个元素的大小为一个字,所以偏移量为8*4。

符号扩展:

        需要符号扩展的是需要进行运算的立即数,如beq,lw,sw,addi他们的立即数都需要进行加法运算,beq的立即数需要与PC+4相加,lw和sw的立即数是需要与基址寄存器的地址相加,addi的立即数需要与指令中的源寄存器相加,这些都需要将立即数看作有符号数进行符号扩展再运算。

        而对于lui,ori,jump不直接进行加法运算的 就不需考虑符号扩展。

例:

某条addi的机器码为:

0010 00 01 001 1 0011 1011 0000 0010 0000 

若寄存器编号和寄存器数据值相同,则此指令为:

addi $19,$9,(1011000000100000)B

所以运算结果应该为:

0000 0000 0000 0000 0000 0000 0000 1001

+

1111 1111 1111 1111 1011 0000 0010 0000(有符号数16位符号扩展为32位)

=

1111 1111 1111 1111 1011 0000 0010 1001

此结果存入$19中

PC相对寻址:

beq $t2,$t0,10 ; 假设此时PC中的值为01000000H

则目标地址为:

第二章:指令:计算机的语言(防遗忘)  (H表示16进制,D表示十进制)

即0 100002C H

无条件跳转:

Jump 10;  跳转到10*4=40D=28H

目标地址为:

0 0000028H

PC高四位bit

32位立即数:

lui指令(读取立即数高位指令)+ori指令(立即数或)

lui指令将16位立即数常数放到寄存器高16位,低16位填充0

ori指令将16位立即数常数放到寄存器低16位,高16位填充0

立即数:

在逻辑操作中:立即数与、立即数或的16位立即数是高16位补0形成32位进行与或运算(相当于无符号数) 如ori;

在加法下:立即数进行符号扩展,再运算    如addi;

远距离分支:

第二章:指令:计算机的语言(防遗忘)

实现其他跳转

第二章:指令:计算机的语言(防遗忘)

第二章:指令:计算机的语言(防遗忘)

为什么lw和sw的地址是字节地址(不乘以4),而beq和jump是字地址(偏移量*4)?

        因为beq和jump都是程序计数器的跳转,是存放指令地址的,而指令是32位的,一条指令4个字节,所以指令的存储都是以4个字节为单位的,所以只需要字地址就可以找到一条指令。但是数据不一定是4个字节的,比如C语言中char类型是一个字节的,这样的话,为了使得lw和sw能取到具体的数据,需要具体到字节地址。

三、硬件设计的设计原则

简单源于规整

所有指令长度统一、算术指令总是需要三个寄存器操作数、寄存器字段在每种指令格式的位置相同

越小越快

寄存器只有32个。

优秀的设计需要适宜的折中方案

指令长度相同的情况下,不同类型的指令采用不同的指令格式。

不同类型指令采用不同的解码方式,但都是32位相同的指令长度,尽可能保持相似的指令格式。

一个 MIPS 例子是在指令中提供更大地址与常数,并且保持所有的指令具有相同的长度之间的折中。

四、寻址方式

寄存器寻址:操作数在寄存器中,如add

立即数寻址:操作数在指令的立即数字段,如addi

基址寻址:操作数在基址寄存器中,如lw,sw

PC相对寻址:PC作为操作数,如beq

伪直接寻址:无条件的跳转 jump

五、堆、栈数据空间

第二章:指令:计算机的语言(防遗忘)

第二章:指令:计算机的语言(防遗忘)

$gp的范围为1000 0000H 到 1000 ffffH (遍历十六进制低4位) 

第二章:指令:计算机的语言(防遗忘)

六、过程

过程运行的6个步骤

1.将参数放在过程可以访问的寄存器里

2.将控制转移给过程

3.获得过程所需要的存储资源

4.执行过程的操作(请求的任务)

5.将结果的值放在调用程序可以访问到的寄存器

6.将控制返回到调用点

跳转和链接指令:

jal ProcedureAddress// jal Func();

跳转,跳转至过程处,链接是将PC+4的值存入$ra

寄存器跳转指令:

jr $ra// 无条件跳转至$ra中程序的指令处。

七、C语言程序转换为可执行程序的步骤

第二章:指令:计算机的语言(防遗忘)

记忆。

八、习题

第二章:指令:计算机的语言(防遗忘)

第二章:指令:计算机的语言(防遗忘)

A

 第二章:指令:计算机的语言(防遗忘)

①简单源于规整 ②越小越快 ③优秀的设计需要适宜折中的方案

第二章:指令:计算机的语言(防遗忘)

第二章:指令:计算机的语言(防遗忘)

B

第二章:指令:计算机的语言(防遗忘)

×。

遍历十六进制的低4位,所以访问空间是1000 0000~1000 ffff H

 第二章:指令:计算机的语言(防遗忘)

第二章:指令:计算机的语言(防遗忘)

 第二章:指令:计算机的语言(防遗忘)

第二章:指令:计算机的语言(防遗忘)

第二章:指令:计算机的语言(防遗忘)

第二章:指令:计算机的语言(防遗忘)第二章:指令:计算机的语言(防遗忘)

 第二章:指令:计算机的语言(防遗忘)

 第二章:指令:计算机的语言(防遗忘)文章来源地址https://www.toymoban.com/news/detail-446531.html

到了这里,关于第二章:指令:计算机的语言(防遗忘)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【计算机视觉:算法和应用】第二章:图像形成——2.2相机辐射成像

           在对图像生成过程进行建模时,我们已经描述了世界中的三维几何特征是如何投影到图像中的二维特征的。然而,图像不是由二维特征组陈大哥,而是由离散的颜色或强度值组成的。这些值是哪里来的呢?他们是如何与环境中的光源,表面属性和几何,相机光学以及

    2024年02月03日
    浏览(56)
  • 【计算机视觉:算法和应用】第二章:图像形成——2.3数码相机

    2.1几何图元与变换 2.2相机辐射成像        从一个或多个光源开始,在世界中一个或多个表面反射并通过相机镜头后,光最终到达成像传感器。到达传感器的光子是如何转换为我们在数字图像上看到的数字(R,G,B)值的呢?在这一节,我们构建了一个简单的模型来解释大多数

    2024年01月19日
    浏览(67)
  • 计算机操作系统重点概念整理-第二章 进程管理【期末复习|考研复习】

    计算机操作系统复习系列文章传送门: 第一章 计算机系统概述 第二章 进程管理 第三章 进程同步 第四章 内存管理 第五章 文件管理 第六章 输出输出I/O管理 给大家整理了一下计算机操作系统中的重点概念,以供大家期末复习和考研复习的时候使用。 参考资料是王道的计算

    2024年02月08日
    浏览(59)
  • 【计算机组成原理】24王道考研笔记——第二章 数据的表示和运算

    1.1 进制转换 任意进制-十进制: 二进制-八进制、十六进制: 各种进制的常见书写方式: 十进制-任意进制:(用拼凑法最快) 真值:符合人类习惯的数字(带±号的数) 机器数:正负号被“数字化” 1.2 定点数 常规计数:定点数;科学计数法:浮点数 无符号数: 有符号定

    2024年02月16日
    浏览(53)
  • GO语言圣经 第二章习题

    向tempconv包添加类型、常量和函数用来处理Kelvin绝对温度的转换,Kelvin 绝对零度是−273.15°C,Kelvin绝对温度1K和摄氏度1°C的单位间隔是一样的。 conv.go tempconv.go 写一个通用的单位转换程序,用类似cf程序的方式从命令行读取参数,如果缺省的话则是从标准输入读取参数,然后

    2024年02月11日
    浏览(48)
  • 计算机网络第二章(谢希仁)

    解决问题: 在各种线路上如何传送比特流 主要任务:确定与传输媒体的接口的一些特性。( 传输媒体不是指的是具体的传输媒体 ) 主要如下: 1. 典型的数据通信模型 2. 相关术语 通信的目的是传送消息。 数据:运送消息的实体( 也就是说的有意义的符号序列 ) 信号:数据的电

    2024年01月16日
    浏览(48)
  • 计算机网络|第二章:应用层

    分层体系结构回顾 在本章中,我们学习有关网络应用的原理和实现方面的知识。 我们从定义关键的应用层概念开始,其中包括应用程序所需要的网络服务、客户和服务器、进程和运输层接口。 详细考察几种网络应用程序,包括Web、电子邮件、DNS、对等文件分发和视频流。

    2024年02月01日
    浏览(51)
  • 第二章 物理层【计算机网络】

    2023-7-7 16:07:57 以下内容源自《【计算机网络】》 仅供学习交流使用 第一章 计算机网络概述【计算机网络】 计算机网络(第8版) 谢希仁 编著 透明地传输比特流 2.2.1 数据通信系统的模型 2.2.2有关信道的几个基本概念 单工、半双工、全双工 2.2.3 信道的极限容量 奈氏准则、香

    2024年02月13日
    浏览(45)
  • c语言修炼第二章--分支与循环

    目录 前言 2.1分支语句 2.1.1什么是语句 2.2分支语句 2.2.1if语句的语法形式 2.2.2悬空else问题 2.2.3if书写形式的对比 2.3switch语句 2.3.1switch的语法形式 2.3.2 switch与break的关系 2.3.3 switch与default的关系 小伙伴们端午安康吖!今天我们要开始新的一章的学习!直接开始学习叭! 2.1.1什么

    2024年02月11日
    浏览(42)
  • 《python语言程序设计基础》(第二版)第二章课后习题参考答案

    第二章 Python程序实例解析 2.1 温度转换 2.2 汇率兑换 优化: 优化的主要改动: 将货币符号和金额分离出来,使代码更加清晰易读。 将条件判断改为根据货币符号进行判断,避免重复判断。 2.3 绘制彩色蟒蛇 2.4 等边三角形的绘制 代码一: 代码二: 2.5 叠加等边三角形的绘制

    2024年03月19日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包