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. 吃零食 csust oj 贪心

    吃零食 桌上有n袋零食,不同的零食会有不同的美味程度wi和腐坏程度di,每种零食在一单位时间内美味程度都会下降di,但是不会降到0以下. qwb每一单位时间可以吃掉一袋零食.现在qwb想要在吃完所有零 ...

  2. 对已经创建的docker container设置开机自启动

    首先显示出所有的容器 docker ps -a #显示所有容器 设置已经建立的容器的开机自启动方法 docker update --restart=always <container ID 根据 ...

  3. 推荐算法_CIKM-2019-AnalytiCup 冠军源码解读

    最近在帮一初创app写推荐系统,顺便学习一波用户兴趣高速检索的冠军算法. 写总结前贴出冠军代码的git地址:https://github.com/ChuanyuXue/CIKM-2019-Analyt ...

  4. 【Linux基础总结】Linux基本环境

    Linux基本环境 对Linux的基础认识 虚拟机进入终端: [root@hadoop-senior Desktop] # 用户名 主机名 所在目录名称 #:表示当前用户属于root用户,超级管理员用 ...

  5. Openwrt:逆向永久修改Flash中的Mac地址

    get mtd device cat /proc/mtd dev: size erasesize name mtd0: 00800000 00010000 "ALL" mtd1: ...

  6. Ubuntu16.04 flask + nginx + uWSGI 部署

    前言 又有段时间没写博客了,最近一直在写外包项目,都没啥空余时间.这几天花了不少时间做项目部署,也看了不少教程,这里就记录下整个过程,也方便以后要做类似部署的时候不用再查来查去了. flask + u ...

  7. 剑指Offer01之二维数组中查找目标数

    剑指Offer之二维数组中查找目标数 题目描述 ​ 在一个二维数组中(每个一维数组的长度相等),每一行都是从左到右递增的顺序排序,每一列都是从上到下递增的顺序排序,输入这样一个二维数组和一个整数,判断 ...

  8. Python列表,元组,字典,字符串方法笔记

    01. 列表 1.1 列表的定义 List(列表) 是 Python 中使用 最频繁 的数据类型,在其他语言中通常叫做 数组 专门用于存储 一串 信息 列表用 [] 定义,数据 之间使用 , 分隔 列 ...

  9. Bootstrap响应式布局介绍

    一.响应式布局 1.什么是响应式网页 2.响应式网页必须做到的几件事 1.布局,使用流式布局(默认文档流+浮动)+弹性布局+栅格布局 2.文字和图片大小随着容器大小改变 3.媒体查询技术(css3) ...

  10. flask之Flask-session三方组件

    from flask import Flask, views, render_template, request, session, redirect import redis as redis #p ...