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. Spring官网阅读 | 总结篇

    接近用了4个多月的时间,完成了整个<Spring官网阅读>系列的文章,本文主要对本系列所有的文章做一个总结,同时也将所有的目录汇总成一篇文章方便各位读者来阅读. 下面这张图是我整个的写作大 ...

  2. 如何得知某期刊是否被EI收錄?

    转载:http://tul.blog.ntu.edu.tw/archives/4627 若因投稿或評鑑需要,欲得知某期刊是否被 EI 收錄,其實就是確認該期刊是否包含在 EV 平台中的 COMPEND ...

  3. C#实现前向最大匹、字典树(分词、检索)

    场景:现在有一个错词库,维护的是错词和正确词对应关系.比如:错词“我门”对应的正确词“我们”.然后在用户输入的文字进行错词校验,需要判断输入的文字是否有错词,并找出错词以便提醒用户,并且可以显示出正确 ...

  4. JS理论--正则表达式RegExp的创建、元字符、优先度、方法(test(),exec(),match(),replace())

    实战,参数可以对照上面的,代码一定要敲 var str = 'abc123cba456aaa789'; var reg = /\d+/g; console.log(reg.test(str)) //s ...

  5. Xshell 与 Xftp 的安装与使用

    我们在日常工作中,不管是系统管理员.程序员.还是技术工程师,如果想登陆到 Linux 服务器,不可能总是跑到机房去工作,通常我们需要一个工具帮我们去做远程连接,这样我们只需要用笔记本电脑就可以连接到服 ...

  6. Antd 表格数据分页展示

    分页组件代码 render(){ const {total,size,currenPage} = this.state // 参数分别为数据总条数.每页数据条数.当前页页码 return ( // 渲 ...

  7. 浅谈PostgreSQL用户权限

    问题 经常在PG群里看到有人在问“为什么我对表赋予了权限:但是还是不能访问表” 解析 若你看懂德哥这篇文章PostgreSQL逻辑结构和权限体系介绍:上面对你就不是困扰你的问题 解决这个问题很简单:在 ...

  8. centos7 下安装apache mysql php phpmyadmin。

    1 安装mysql yum -y install mariadb-server systemctl start mariadb.service systemctl enable mariadb.ser ...

  9. 最短Hamilton路径 数位dp

    最短Hamilton路径 #include<bits/stdc++.h> using namespace std; ; <<maxn][maxn]; int maps[maxn ...

  10. uwsgi模块以参数形式运行项目

    1.虚拟环境中下载uwsgi模块-------pip install uwsgi 2.脚本运行案例 新建一个test.py脚本文件,写入如下内容: def application(env, start ...