mips寄存器

实验四 MIPS寄存器文件设计 Logisim Logisim MIPS寄存器文件设计 阅读详情
MIPS有32个通用寄存器($0-$31),各寄存器的功能及汇编程序中使用约定如下:

下表描述32个通用寄存器的别名和用途

REGISTER

NAME

USAGE

$0

$zero

常量0(constant value 0)

$1

$at

保留给汇编器(Reserved for assembler)

$2-$3

$v0-$v1

函数调用返回值(values for results and expression evaluation)

$4-$7

$a0-$a3

函数调用参数(arguments)

$8-$15

$t0-$t7

暂时的(或随便用的)

$16-$23

$s0-$s7

保存的(或如果用,需要SAVE/RESTORE的)(saved)

$24-$25

$t8-$t9

暂时的(或随便用的)

$28

$gp

全局指针(Global Pointer)

$29

$sp

堆栈指针(Stack Pointer)

$30

$fp

帧指针(Frame Pointer)

$31

$ra

返回地址(return address)



下面给以详细说明:
$0:即$zero,该寄存器总是返回零,为0这个有用常数提供了一个简洁的编码形式。
           move $t0,$t1
       实际为
           add $t0,$0,$t1
       使用伪指令可以简化任务,汇编程序提供了比硬件更丰富的指令集。
$1:即$at,该寄存器为汇编保留,由于I型指令的立即数字段只有16位,在加载大常数时,编译器或汇编程序需要
       把大常数拆开,然后重新组合到寄存器里。比如加载一个32位立即数需要 lui(装入高位立即数)和addi两条
       指令。像MIPS程序拆散和重装大常数由汇编程序来完成,汇编程序必需一个临时寄存器来重组大常数,这
       也是为汇编 保留$at的原因之一。
$2..$3:($v0-$v1)用于子程序的非浮点结果或返回值,对于子程序如何传递参数及如何返回,MIPS范围有一套约
       定,堆栈中少数几个位置处的内容装入CPU寄存器,其相应内存位置保留未做定义,当这两个寄存器不够存
       放返回值时,编译器通过内存来完成。
$4..$7:($a0-$a3)用来传递前四个参数给子程序,不够的用堆栈。a0-a3和v0-v1以及ra一起来支持子程序/过程
       调用,分别用以传递参数,返回结果和存放返回地址。当需要使用更多的寄存器时,就需要堆栈(stack)
       了,MIPS编译器总是为参数在堆栈中留有空间以防有参数需要存储。
$8..$15:($t0-$t7)临时寄存器,子程序可以使用它们而不用保留。
$16..$23:($s0-$s7)保存寄存器,在过程调用过程中需要保留(被调用者保存和恢复,还包括$fp和$ra),MIPS
       提供了临时寄存器和保存寄存器,这样就减少了寄存器溢出(spilling,即将不常用的变量放到存储器的过程),
       编译器在编译一个叶(leaf)过程(不调用其它过程的过程)的时候,总是在临时寄存器分配完了才使用需要
       保存的寄存器。
$24..$25:($t8-$t9)同($t0-$t7)
$26..$27:($k0,$k1)为操作系统/异常处理保留,至少要预留一个。 异常(或中断)是一种不需要在程序中显示
       调用的过程。MIPS有个叫异常程序计数器(exception program counter,EPC)的寄存器,属于CP0寄存器,

       用于保存造成异常的那条指令的地址。查看控制寄存器的唯一方法是把它复制到通用寄存器里,指令mfc0
       (move from system control)可以将EPC中的地址复制到某个通用寄存器中
,通过跳转语句(jr),程序可以返
       回到造成异常的那条指令处继续执行
。MIPS程序员都必须保留两个寄存器$k0和$k1,供操作系统使用。

       发生异常时,这两个寄存器的值不会被恢复,编译器也不使用k0和k1,异常处理函数可以将返回地址放到这
       两个中的任何一个,然后使用jr跳转到造成异常的指令处继续执行
。
$28:($gp)为了简化静态数据的访问,MIPS软件保留了一个寄存器:全局指针gp(global pointer,$gp),全局指针
       只想静态数据区中的运行时决定的地址,在存取位于gp值上下32KB范围内的数据时,只需要一条以gp为基
       指针的指令即可。在编译时,数据须在以gp为基指针的64KB范围内。
$29:($sp)MIPS硬件并不直接支持堆栈,你可以把它用于别的目的,但为了使用别人的程序或让别人使用你的程
       序, 还是要遵守这个约定的,但这和硬件没有关系。
$30:($fp)GNU MIPS C编译器使用了帧指针(frame pointer),而SGI的C编译器没有使用,而把这个寄存器当作保
       存寄存器使用($s8),
这节省了调用和返回开销,但增加了代码生成的复杂性。
$31:($ra)存放返回地址,MIPS有个jal(jump-and-link,跳转并 链接)指令,在跳转到某个地址时,把下一条指令的
       地址放到$ra中。用于支持子程序,例如调用程序把参数放到$a0~$a3,然后jal X跳到X过程,被调过程完成后
       把结果放到$v0,$v1,然后使用jr $ra返回。
计组头哥实验 实验三 MIPS寄存器实验 了解 MIPS 寄存器文件基本概念,进一步熟悉多路选择器、译码器、解复用器等 Logisim 组件的使用,并利用相关组件构建 MIPS 寄存器文件。 阅读详情

相关推荐

MIPS 寄存器

概要 MIPS寄存器 RISC的一个显著特点就是大量使用寄存器。因为寄存器的存取可以在一个时钟周期内完成,同时简化了寻找方式,所以,MIPS的指令中除了加载/存储指令以外,都使用寄存器或者立即数作为操作数,以便让编译器通过保持对寄存器内数据的频繁存取进一步优化代码的生成性能。   MIPS32寄存器分为两类:通用寄存器(GPR)和特殊寄存器。 通用寄存器(GPR) 在MIPS体系结构中有32个通用寄存器,在汇编程序中可以用编号$0~$31表示,也可以用寄存器的名字表示,如sp、sp、sp、t1、$ta等,如

极客驿站 7294

MIPS体系结构(1)

MIPS中的寄存器 32个通用寄存器:寄存器编号 助记符 用法 0 zero 永远返回值为0 1 at 用做汇编器的暂时变量 2-3 v0, v1 子函数调用返回结果 4-7 a0-a3 子函数调用的参数 8-15 t0-t7 暂时变量,子函数使用时不需要保存与恢复 24-25 t8-t9 16-23 s0-s7 子函数寄存器变量。子函数必须保存和恢复使用过的变量在函数返回之前,从而调用函数知道这些寄存器的值没有变化。 26,27 k0,k1 通常被中断或异常处理程序使用作为保存一些系统参数 28 gp 全

ustc517551033的专栏 804

存储系统设计(HUST)--第2关:MIPS寄存器文件设计

主页有专栏

qq_66047907的博客 3710

MIPS指令集:寄存器

   不同的计算机架构中寄存器的种类和数量也不相同。MIPSmips中用到的寄存器按照功能分为有通用寄存器、协处理器0、浮点寄存器、乘法部件寄存器。通用寄存器共32个,是没有特殊限制,一般程序员可以使用的寄存器。协处理器0寄存器也叫控制寄存器,共32个,用来控制并管理CPU。浮点寄存器和乘法部件寄存器都是专用寄存器。浮点寄存器也叫协处理器1寄存器,共32个,用来存储和浮点计算相关的数据。乘法部件...

海棠花的博客 1万+

MIPS寄存器文件设计.txt

完成存储扩展设计后,可以在寄存器文件自动测试电路中进行测试,电路会自动进行评分,确认实验完成正确后,可利用文本编辑工具打开 storage.circ ,将所有文字信息复制粘贴到 Educoder 平台的 storage.circ 文件中,再点击评测按钮即可进行本关测试。平台会对你设计的电路进行自动测试,为方便测试,请勿修改子电路封装,

MIPS寄存器文件 (练习)

在行为VHDL中(使用3个并发进程)描述图1所示的MIPS寄存器文件,该文件通过以下接口支持3操作数算术运算: • Generics: - Register file size/depth (reg_file_depth with default value of 23 registers) - Register file width (reg_file_width with default value of 32 bits) • Inputs: - Clock (clk -> 1 bit) - Asynchronous reset (rst -> 1 bit) - Register write enable (RegWrite -> 1 bit) 1 -> enable writing to register file, 0 -> disable writing to register file - Read Address for first (read) operand (RA1 -> [log2 (reg_file_depth)] bits) - Read Address for second (read) operand (RA2 -> [log2 (reg_file_depth)] bits) - Write Address for third (write) operand (WA -> [log2 (reg_file_depth)] bits) - Write Data for third (write) operand (WD -> reg_file_width bits) • Outputs: - Read Data for first (read) operand (RD1 -> reg_file_width bits) - Read Data for second (read) operand (RD2 -> reg_file_width bits) • In Vivado - Create a blank project - Add design and simulation source files - Run behavioral simulation - Your waveform configuration should be identical to the provided waveform snapshot, see Figure 2. • In your design: - Guard against address-spilling (address-overflow) where addresses could go out of range, e.g., exceeding the register file size/depth. - Guard against unintentional writes to register zero ($0), i.e., $0 is read-only and has always the value 0.

MIPS寄存器文件设计实验

今天写MIPS寄存器文件设计实验,同时复习一下MIPS这块地方。

2301_80073593的博客 3011

python特征选择pso_【来点干货】机器学习中常用的特征选择方法及非常详细的Python实例...

花费了很长时间整理编辑,转载请联系作者授权,违者必究。特征选择(Feature selection)是在构建预测模型的过程中减少输入变量的一个过程。它是机器学习中非常重要的一步并在很大程度上可以提高模型预测精度。这里我总结了一些机器学习中常见的比较有用的特征选择方法并附上相关python实现code。希望可以给大家一些启发。首先,我们为什么要进行特征选择呢?它有以下几个优点:减少过拟合:冗余数据常...

weixin_39927158的博客 1161

mips指令与寄存器详解

MIPS通用寄存器 MIPS有32个通用寄存器($0-$31),各寄存器的功能及汇编程序中使用约定如下: 下表描述32个通用寄存器的别名和用途 REGISTER NAME USAGE $0 $zero 常量0(constant value 0) $1

FrozenShore 4万+

Android13 CarPowerManagementService启动流程分析

在CarPowerManagementService中init调用PowerHalService的setListener设置事件侦听器以接收车辆的电源事件。

liuning1985622的博客 956

[OrCad电路板设计系统].Orcad.Pspice.9.2下载安装

Orcad.Pspice.9.2详细下载安装图文步骤1 安装前准备工作1.1 下载安装包1.2 解压2 安装时步骤2.1 安装文件2.2 破解文件3 安装完成 1 安装前准备工作 1.1 下载安装包 打开百度网盘APP 链接:https://pan.baidu.com/s/1cMFxHUvuh5iEhFVT-lvciQ 提取码:7m65 1.2 解压 解压下载好的安装包 2 安装时步骤 2.1 安装文件 1.点击Setup安装文件,出现警告对话框,告诉你应该关闭所有病毒防火墙,点击确定 2.进入安装界面,

weixin_48924581的博客 1万+

MIPS 通用寄存器

MIPS有32个通用寄存器($0-$31),各寄存器的功能及汇编程序中使用约定如下: 下表描述32个通用寄存器的别名和用途 REGISTER NAME USAGE $0 $zero 常量0(constant value 0) $1 $at 保留给汇编器(Reserved fo

flyingqr的专栏 5万+

双足步行机器人的ZMP与CoP检测

静态步行与动态步行   机器人步态分为静态步行和动态步行。当机器人做静态步行运动时,身体的各个部分运动速度很小,机器人的整体稳定性较易控制。静态步行稳定性采用机器人的重心地面投影点(Center of Gravity,简称CoG)作为稳定性标准,这种判定方法适用于运动较为缓慢的情况。如果机器人采用的是一种高速运动的步行方式,则称之为动态步行。当机器人进行动态步行时,其重心的位置和加速度的大小时...

weixin_34112208的博客 5907

MIPS寄存器约定

对于在一个CPU上进行开发,掌握其工作的CPU的寄存器约定是非常重要的。 MIPS体系结构提供了32个GPR(GENERAL PURPOSE REGISTER)。这32个寄存器的用法大致如下: REGISTER   NAME          USAGE $0                   $zero           常量0(constant value 0) $2-$3        

yoursy的专栏 2711

避坑指南:Zabbix poller进程100%占用的5种常见原因及解决方案

本文深入剖析了Zabbix poller进程占用率高达100%的五大常见原因,包括监控项与进程数不匹配、不可达主机资源浪费、数据库性能瓶颈、监控项配置不合理以及版本缺陷。文章提供了从系统化诊断到针对性解决方案的完整指南,并重点介绍了如何通过优化zabbix_server.conf中的StartPollers等关键参数进行有效调优,帮助运维人员从根本上解决这一经典性能问题。

7z8x2c4v6b9的博客 250

apollo-减速带通行

主车在通过减速带时速度不超过3m/s

是菜鸟o的博客 389

MIPS中的寄存器

32个通用寄存器: 寄存器编号 助记符 用法 0 zero 永远返回值为0 1 at 用做汇编器的暂时变量 2-3 v0,v1 子函数调用返回结果 4-7 a0-a3 子函数调用的参数 8-15 t0-t7 暂时变量,子函数使用时不需要保存与恢复 24-25 t8-t9   16-23 s0-s7 子函数寄存器变量。子函数必须保存和恢复使用过的变量在函数返回之前,从而调用函数知道这些

monkeyzh123的专栏 4529

手把手教你学Simulink--FIR滤波器的设计与优化仿真

FIR滤波器的设计目标通常包括指定的频率响应特性(如低通、高通、带通或带阻),以及特定的应用需求(如线性相位、最小化误差等)。Simulink提供了一个直观且强大的平台来模拟这些设计,并允许用户通过调整参数实时观察其对系统性能的影响。明确你的系统需求,比如输入信号类型(如正弦波组合)、采样率、FIR滤波器的设计参数(如滤波器类型、阶数、截止频率等)。假设我们需要设计一个低通FIR滤波器,用来去除高于1kHz的所有频率成分,保留低于1kHz的信号成分。采样率为8kHz。

MHD0815的博客 346

MIPs32寄存器

title: Mips-register date: 2019-12-07 14:54:25 description: Mips 32个MIPs寄存器的作用 一. 简介  MIPS有32个通用寄存器($0-$31),各寄存器的功能及汇编程序中使用约定如下:  下表描述32个通用寄存器的别名和用途 REGISTER NAME USAGE $0 $zero 常量0(constant ...

qq_38877888的博客 2283

三维重建(十八)——colmap的使用(粗浅)

三维重建(十八)——colmap的使用(粗浅)

河海大学研究生在读的学习笔记 1375

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

MIPS寄存器文件设计

功能描述: 设计一个寄存器文件,便于MIPS CPU执行指令时读取数据。实现MIPS寄存器组,为简化工作量,寄存器编号高3位不要,最终电路中只需要实现0-3号寄存器,注意0号寄存器恒零。 实验步骤: 第0号寄存器的值始终为零,用常量0的32位数据位宽接入第0号寄存器的输入。 将Din的隧道接入剩下的3个寄存器输入处。 用一个解复用器完成WE对4个寄存器的使能端输入,W#为其选择端接口,并且为了简化实验过程,R1#R2#W#都只有2位位宽,也便于与解复用器的位宽对接。 将CLK与4个寄存器的时钟接口对接。 使

Yu 1万+

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

mips的32个寄存器

MIPS comes with 32 general purpose registers named $0. . . $31<br />Registers also have symbolic names reflecting their conventional8 use:<br />$0  $zero constant 0<br />$1  $at used by assembler<br />$2  $v0 function result<br />$3  $v1 function result<br

ustc517551033的专栏 1776

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

MIPS 通用寄存器 + 指令

MIPS通用寄存器 MIPS有32个通用寄存器($0-$31),各寄存器的功能及汇编程序中使用约定如下: 下表描述32个通用寄存器的别名和用途 REGISTER NAME USAGE $0 $zero 常量0(constant value 0) $1 $at 保留给汇编器(Re

gujing001的专栏 8万+
上一篇: uboot启动第一部分
下一篇: mips指令
Linux_Spirit
博客等级 码龄12年 3粉丝 2原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值