由于MIPS各个版本之间的操作数会变,如果出现无法识别的情况

需要根据官方的MIPS instruction手册逐条核对,此处的版本为Rev.1

    //******MIPS-55*********//
parameter //SPECIAL OP LIST 5-0
ADDU = 'b100001,
SUBU = 'b100011,
ADD = 'b100000,
SUB = 'b100010,
AND = 'b100100,
OR = 'b100101,
XOR = 'b100110,
NOR = 'b100111,
SLT = 'b101010,
SLTU = 'b101011,
SRL = 'b000010,
SRA = 'b000011,
SLL = 'b000000,
SLLV = 'b000100,
SRLV = 'b000110,
SRAV = 'b000111,
JR = 'b001000,
JALR = 'b001001,
MULT = 'b011000,
MULTU = 'b011001,
DIV = 'b011010,
DIVU = 'b011011,
MFHI = 'b010000,
MFLO = 'b010010,
MTHI = 'b010001,
MTLO = 'b010011,
BREAK = 'b001101,
SYSCALL = 'b001100,
TEQ = 'b110100,
//SPECIAL 2 func
CLZ = 'b100000,
MUL = 'b000010,
//REGIMM OP LIST 20-16
BLTZ = 'b00000,
BGEZ = 'b00001,
//COP0 OP LIST
ERET = 'b011000, //5-0&&25TH=1
MFC0 = 'b00000, //20-16
MTC0 = 'b00100,
//OPCODE FIELD 31-26
ADDI = 'b001000,
ADDIU = 'b001001,
ANDI = 'b001100,
ORI = 'b001101,
XORI = 'b001110,
LW = 'b100011,
SW = 'b101011,
BEQ = 'b000100,
BNE = 'b000101,
BLEZ = 'b000110,
BGTZ = 'b000111,
SLTI = 'b001010,
SLTIU = 'b001011,
LUI = 'b001111,
J = 'b000010,
JAL = 'b000011,
LB = 'b100000,// Load Byte Function=6'h24
LBU = 'b100100,// 1Load Byte Unsigned
LH = 'b100001,// Load high
LHU = 'b100101,// Load High Unsigned
SB = 'b101000,// Send Byte
SH = 'b101001,// Send High SPECIAL = 'b000000,
SPECIAL2= 'b011100,
REGIMM = 'b000001,
COP0 = 'b010000; //ALU OPCODE
parameter _ADDU = 'b0000; //r=a+b unsigned
parameter _ADD = 'b0010; //r=a+b signed
parameter _SUBU = 'b0001; //r=a-b unsigned
parameter _SUB = 'b0011; //r=a-b signed
parameter _AND = 'b0100; //r=a&b
parameter _OR = 'b0101; //r=a|b
parameter _XOR = 'b0110; //r=a^b
parameter _NOR = 'b0111; //r=~(a|b) parameter _LUI = 'b1000; //r={b[15:0],16'b0}
parameter _SLT = 'b1011; //r=(a-b<0)?1:0 signed
parameter _SLTU = 'b1010; //r=(a-b<0)?1:0 unsigned
parameter _SRA = 'b1100; //r=b>>>a
parameter _SLL = 'b1110; //r=b<<a
parameter _SRL = 'b1101; //r=b>>a parameter _SYSCALL = 'b1000,
_BREAK = 'b1001,
_TEQ = 'b1101; wire [:] op = instr[:];
assign rs = instr[:];
assign rt = instr[:];
assign rd = instr[:];
wire [:] func = instr[:]; wire [:] shamt = instr[:];
wire [:] imm = instr[:];
wire [:] addr = instr[:]; parameter SIGN = 'b1;
parameter UNSIGN = 'b0;
wire imm_sign = (op==ANDI||op==ORI||op==XORI)?UNSIGN:SIGN; wire [:] shamt_ext = {'b0,shamt};
wire [:] imm_ext = imm_sign?{{(){imm[]}},imm}:{'b0,imm}; reg [:] load_data,clz_data; assign waddr = (op==SPECIAL||op==SPECIAL2)? rd: (op==JAL) ?'b11111:rt;

MIPS rev.1 指令参数的更多相关文章

  1. angularjs指令参数transclude

    angularjs指令参数transclude transclude翻译为嵌入,和之前看到的vue中的slots作用差不多,目的是将指令元素的子内容嵌入到指令的模板中 定义指令 <div sid ...

  2. ASP.NET 中 OutputCache 指令参数详解

    使用@ OutputCache指令使用@ OutputCache指令,能够实现对页面输出缓存的一般性需要.@ OutputCache指令在ASP.NET页或者页中包含的用户控件的头部声明.这种方式非常 ...

  3. MIPS 跳转指令BAL vs JAL

    今天调试程序,发现在windows和Linux下,diab编译的结果不一样,一个能跑一个不能跑.最后定位到了函数跳转上. 程序代码里的函数跳转写的是BAL,在windows下编译结果正常,在Linux ...

  4. angular 自定义指令参数详解【转】【个人收藏用】

    restrict:指令在dom中的声明形式 E(元素)A(属性)C(类名)M(注释) priority优先级:一个元素上存在两个指令,来决定那个指令被优先执行 terminal:true或false, ...

  5. angular 自定义指令参数详解

    restrict:指令在dom中的声明形式 E(元素)A(属性)C(类名)M(注释) priority优先级:一个元素上存在两个指令,来决定那个指令被优先执行 terminal:true或false, ...

  6. 第六篇:vue.js模板语法(,属性,指令,参数)

    Vue.js 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统. 结合响应系统,在应用状态改变时, Vue 能够智能地计算出重新渲染组件的最小代价并应用到 DOM 操作上.( ...

  7. linux基础指令参数

    eth0,eth1,eth2--代表网卡一,网卡二,网卡三-- lo代表127.0.0.1,即localhost 参考: Linux命令:ifconfig 功能说明:显示或设置网络设备 语 法:ifc ...

  8. find指令参数

    1.name ~ 根目录 . 当前和子目录 name之后跟的是文件名 find . -name "[a-z]*[4-9].log" -print 2.perm perm后面跟的是权 ...

  9. MIPS指令 MIPS架构

    华中科技大学 - 计算机组成原理 华中科技大学 - 计算机硬件系统设计 Microprocessor without Interlocked Pipleline Stages 无内部互锁流水级的微处理 ...

随机推荐

  1. ce

    一,什么是epel 如果既想获得 RHEL 的高质量.高性能.高可靠性,又需要方便易用(关键是免费)的软件包更新功能,那么 Fedora Project 推出的 EPEL(Extra Packages ...

  2. 读《分布式一致性原理》CURATOR客户端

    创建会话 使用curator客户端创建会话和其它客户端产品有很大不同 1.使用CuratorFrameworkFactory这个工厂类的两个静态方法来创建一个客户端: public static Cu ...

  3. 自动化装配Bean

    一.Spring装配-自动化装配 @Component和@ComponentScan 通过spring注解(@Component)来表明该类会作为组件类,并告知Spring要为这类创建bean,不过组 ...

  4. libaco: 一个极速的轻量级 C 非对称协程库 🚀 (10 ns/ctxsw + 一千万协程并发仅耗内存 2.8GB + Github Trending)

    0 Name 简介 libaco - 一个极速的.轻量级.C语言非对称协程库. 这个项目的代号是Arkenstone 

  5. ELK-Stack 最后一次全篇文档

    简介: ELK-Stack 日志收集系统.最后一次全篇记录的笔记,之后关于 ELK 的笔记都将是片段型.针对性的.  环境介绍: ELK-Stack:192.168.1.25 ( Redis.LogS ...

  6. iOS学习之UIPickerView控件的简单使用

    UIPickerView控件在给用户选择某些特定的数据时经常使用到,这里演示一个简单的选择数据,显示在UITextField输入框里,把UIPickerView作为输入View,用Toolbar作为选 ...

  7. LeetCode之动态规划

    62. Unique Paths QuestionEditorial Solution Total Accepted: 86710 Total Submissions: 239084 Difficul ...

  8. ss查看状态

    ps -ef | grep ss-server | grep -v ps | grep -v grep

  9. 前端开发之JavaScript基础篇二

    主要内容: 1.流程控制条件语句和switch语句 2.for循环和while循环 3.Break语句和Continue语句 4.数组和数组常用方法 5.函数 6.对象 一.流程控制条件语句和swit ...

  10. Java如何快速修改Jar包里的文件内容

    需求背景:写了一个实时读取日志文件以及监控的小程序,打包成了Jar包可执行文件,通过我们的web主系统上传到各个服务器,然后调用ssh命令执行.每次上传前都要通过解压缩软件修改或者替换里面的配置文件, ...