https://mp.weixin.qq.com/s/CbBWdTlc_DESlUzd8KFcSg

 
介绍Term类各方法的实现。
 
 
 
1. prime
 
表示一个项是否是质项,即这个项是否被其他项包含。如项AB包含项ABC。
 
2. covers
 
 
this covers x,即项this包含项x,包含两点:
a. 项this包含的变量比项x少:x.mask &~ mask
b. 项this包含的变量的值与项x相同:(value ^ x.value) &~ mask
 
如包含ABC三变量的项:AB(value: 110, mask: 001),ABC(value: 111, mask: 000)
AB covers ABC: ((110 ^ 111) &~ 001) | (000 &~ 001) == 0
 
3. intersects
 
 
this intersects x,即项this与项x相交,也包含两点:
a. 项this与项x有共同的变量:~mask & ~x.mask
b. 且共同的变量值都相同:(value ^ x.value) & (~mask & ~x.mask)
 
4. equals
 
 
this equals that,即项this与项that相等,需要两者的value和mask都相等。
 
5. <
 
 
this < that,即项this小于项that,包含两种情况:
a. this的值小于that的值;
b. 值相等,但this.mask小于that.mask;
 
小于判断用于项之间的排序,并无特殊的意义。
 
6. similar
 
 
this similar x, 即项this与项x相似,包含三个条件:
a. mask相等:mask == x.mask
b. this.value > x.value
c. this和x的值只差一个变量(差值为2的幂):(diff & diff - 1) == 0
 
如:ABC(值为111) similar AB'C(值为101)。
 
7. merge
 
 
this merge x,需要this similar x,如ABC merge AB'C = AC,
a. 取出不同的变量:val bit = value - x.value
b. 把value中相应变量对应的位清0:value &~ bit
c. 把mask中相应变量对应的位置1:mask | bit
 
在合并生成的新项(Term)中,合并的变量对应的value位为0,对应的mask位为1,以表明这个变量在Term中不存在。
 
合并生成的新项是一个质项,而被合并的两项则不再是质项了。
 

Rocket - decode - Term的更多相关文章

  1. Rocket - decode - 几个问题

    https://mp.weixin.qq.com/s/pMsK_E4mQrm3QXdnp7nDPQ   讨论指令解码部分遗留的几个问题.     1. 最小项与蕴含项之间的关系   参考链接: htt ...

  2. Rocket - decode - SimplifyDC

    https://mp.weixin.qq.com/s/4uWqBRrMVG6FlnBKmw8U-w   介绍SimplifyDC如何简化解码逻辑.     1. 使用   ​​   简化从mint和m ...

  3. Rocket - decode - Simplify

    https://mp.weixin.qq.com/s/YWXYNaRU-DbLOMxpzF2bpQ   介绍Simplify如何简化解码逻辑.     1. 使用   Simplify在DecodeL ...

  4. Rocket - decode - 最小项与最大项

    https://mp.weixin.qq.com/s/XrBh9Kapj01HdvBi5MkbgA   介绍布尔代数最小项与最大项相关概念,以及Term类的实现.     参考链接: https:// ...

  5. Rocket - decode - 解码单个信号

    https://mp.weixin.qq.com/s/0D_NaeBEZX5LBQRdCz2seQ     介绍解码单个信号逻辑的实现.    1. 单个信号   每个指令对应了一组信号,每个信号对应 ...

  6. Rocket - decode - Inst Decode

    https://mp.weixin.qq.com/s/WvepB3yAzjMbQalO3Z82pQ   介绍RocketChip Instruction解码逻辑的实现.   1. RISC-V   R ...

  7. arm cortex-m0plus源码学习(三)GPIO

    概述: Cortex-m0的integration_kit提供三个GPIO接口,其中GPIO0传输到外部供用户使用,为EXTGPIO:GPIO1是内核自己的信号,不能乱改,会崩掉:GPIO2是一些中断 ...

  8. 64位开源处理器Rocket该人士介绍

    最近大概读一点UCB发布时间Rocket处理器的源代码,的每个文件的源代码的功能有一定的一般理解,Mark一点点. Rocket是一家64bit标量处理器,5第一阶段管道,用途risc-v指令集.综合 ...

  9. Linking code for an enhanced application binary interface (ABI) with decode time instruction optimization

    A code sequence made up multiple instructions and specifying an offset from a base address is identi ...

随机推荐

  1. 王颖奇 201771010129《面向对象程序设计Java》第十八周实验总结

    实验十八  总复习 实验时间 2018-12-30 1.实验目的与要求 (1) 综合掌握java基本程序结构: (2) 综合掌握java面向对象程序设计特点: (3) 综合掌握java GUI 程序设 ...

  2. 机器学习的hello world——MNIST

    MNIST:一个由60000行训练数据集和10000行的测试数据集(机器学习模型设计时必须有一个单独的数据集用于评估模型的性能)组成的数据集. 下载mnist的数据集后,将文件放入C:\Users\m ...

  3. MySQL索引知识介绍

    前言: 索引是MySQL数据库中的重要对象之一,索引的目的在于提高查询效率.可以类比字典中的目录,查找字典内容时可以根据目录查找到数据的存放位置,然后直接获取即可.索引是表的目录,在查找内容之前可以先 ...

  4. printf小结

    下午健身前和lxt兄弟讨论了一个关于 printf 输出的问题,恰巧以前见过类似的,回来写一个收获总结. 首先看一个这样一个例子 #include<cstdio> int i; int m ...

  5. vue相关环境搭建一条龙

    前言 如题,基于很多朋友对于环境配置及搭建存在疑问或者不熟悉的情况,因此整理一篇完整的环境搭建说明,在此默认各位到手的电脑是需要从0开始配置环境.  nvm的安装 很多同学过去可能安装node都是直接 ...

  6. android 压缩图片大小,防止OOM

    android开发中,图片的处理是非常普遍的,经常是需要将用户选择的图片上传到服务器,但是现在手机的分辨率越来越好了,随便一张照片都是2M或以上,如果直接显示到ImageView中,是会出现OOM的, ...

  7. spring MVC--WebApplicationContext做了什么

    在WebApplicationContext中默认内置了DispatcherServlet依赖的bean!我们可以根据实际的项目需要对这些bean进行自定义参数设置.因为如果在配置文件中存在我们自定义 ...

  8. java - >IO流_缓冲流(高效流)

    缓冲流(高效流) 在我们学习字节流与字符流的时候,大家都进行过读取文件中数据的操作,读取数据量大的文件时,读取的速度会很慢,很影响我们程序的效率,那么,我想提高速度,怎么办? Java中提高了一套缓冲 ...

  9. Codeforces 1105D(Kilani and the Game,双队列bfs)

    AC代码: #include<bits/stdc++.h> #define ll long long #define endl '\n' #define mem(a,b) memset(a ...

  10. spark aggregate函数

    aggregate函数将每个分区里面的元素进行聚合,然后用combine函数将每个分区的结果和初始值(zeroValue)进行combine操作.这个函数最终返回的类型不需要和RDD中元素类型一致. ...