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

介绍AddressSet.misaligned的实现。之前介绍的比较概括,也有偏差。这里根据实际执行结果,分析总结其功能。

1. 提取执行

misaligned功能比较独立,可以单独提取出来。执行观察运行结果,或者调试跟踪来观察其功能。

其中,需要解决的依赖是log2Floor。

执行结果如下:

2. 基本功能

misaligned的基本功能是把从base开始的size个地址,按照对齐原则,使用最少的基址/掩码对表示。

从上面的例子可以看出:

1) misaligned(0,4)

从0开始的4个地址,可以直接使用两位掩码进行表示,即(0,3=0b11);

2) misaligned(1,4)

从1开始的4个地址中:

a. 地址1=0b001最大对齐范围是1个地址,所以只能独自作为一个表示(1,0=0b0);

b. 地址2=0b010最大对齐范围是2个地址,由于还有三个地址没表示,可以把这两个地址包含在内,所以可以使用其表示为(2,1=0b1)。包含两个地址,即地址2和地址3;

c.地址4=0b100最大对齐范围就是4个地址,但是size中未表示的还有一个地址,所以只能使用表示(4,0=0b0)表示一个地址,即地址4;

3) misaligned(2,4)

a. 地址2=0b010最大对齐范围是2个地址,(2, 1=0b1)表示2个地址,即地址2和地址3;

b. 地址4=0b100最大对齐范围是4个地址,但size中未表示的地址还有2个,所以使用(4,1=0b1)表示2个地址,即地址4和地址5;

4) misaligned(3,4)

a. 地址3=0b011最大对齐范围是1个地址,只能独自使用一个表示(3,1=0b1);

b. 地址4=0b100最大对齐范围是4个地址,但size中未表示的地址还有3个,这3个地址无法使用一个掩码全部表示,所以使用(4,1=0b1)表示2个地址,即地址4和地址5;余下一个地址6另外表示;

c. 地址6=0b110最大地址范围是2个地址,但size中未表示的地址只有1个,所以使用(6,0=0b0)来表示这一个地址,即地址6;

3. 简单分析

a. 这是一个递归函数,如果size=0,即没有地址需要表示,则直接返回tail;tail中包含已经生成的基址/掩码对表示;

b. maxBaseAlignment表示基址允许的最大对齐地址数(这里取的是base的最低值为1的位);

c. maxSizeAlignment表示size中可以不多不少完整被一个基址/掩码对表示的地址数,这里取最高位。比如6=0b110,需要被分为4个和2个,两次对齐表示;

d. 从两个值中取较小的一个作为这一步向前跨出的地址数(step);

e. base+step:向前跨过step个地址;

f. size-step:地址数减少step个;

g. (base, step-1)作为基址/掩码对加入tail中;

Rocket - diplomacy - misaligned的更多相关文章

  1. Rocket - diplomacy - LazyModule的组织方式

    https://mp.weixin.qq.com/s/vaDUekxkFkOJLmzg5jCngw 简单介绍LazyModule/LazyModuleImp的组织方式. 1. LazyModule L ...

  2. Rocket - diplomacy - AddressSet

    https://mp.weixin.qq.com/s/ZsEVt1GslL7ufJdJlgpfNQ   介绍AddressSet的实现.   ​​   1. 基本定义   ​​ 使用base/mask ...

  3. Rocket - diplomacy - LazyModule的实例化(补)

    https://mp.weixin.qq.com/s/rgCRorjPYyyD6i7moIzbZg   介绍LazyModule和Node构造方法的执行过程,即实例化过程.     1. NullIn ...

  4. Rocket - diplomacy - LazyModule的实例化

    https://mp.weixin.qq.com/s/9PsBt4_4qHx4i6C5XtuiUw   介绍LazyModule和Node构造方法的执行过程,即实例化过程.     1. NullIn ...

  5. Rocket - diplomacy - LazyModule

    https://mp.weixin.qq.com/s/FBU8fE4u9-UK6mRGQOlvbQ   介绍LazyModule的实现.     ​​   1. children   LazyModu ...

  6. Rocket - diplomacy - ValName

    https://mp.weixin.qq.com/s/so-2x5KLfYF0IMCCqNThwQ   简单调试ValName实现:   1. 使用     ​​   Desugar之后如下: ​​ ...

  7. Rocket - diplomacy - NodeHandle相关类

    https://mp.weixin.qq.com/s/GWL41P1G1BXm2sTeLmckdA   介绍NodeHandle相关的类.     ​​   1. NoHandle   顶层类(tra ...

  8. Rocket - diplomacy - DUEB参数模型的设计

    https://mp.weixin.qq.com/s/9PEEpe1pkQDN9RWpOGSUCQ   介绍DUEB参数模型的设计,不包含实现(实现对设计做了简化).     1. DUEB   di ...

  9. Rocket - diplomacy - 模块结构信息

    https://mp.weixin.qq.com/s/cTRxXwWNEeb4-XX_t4bRcg   讨论模块结构信息的来源及使用方式.     ​​   1. diplomacy   diplom ...

随机推荐

  1. Spring Cloud Alibaba系列(一)nacos作为服务注册中心

    Spring Cloud Alibaba各组件版本关系 Spring Cloud Alibaba Version Sentinel Version Nacos Version RocketMQ Ver ...

  2. Dynamics 365 基于 Sql Server 2017 安装 报表 问题

    如果使用SQL2017 安装D365 会发现 SSRS与AD不能在同一台服务器上,因为无法安装SSRS,而无SSRS 则D365是无法继续安装的. 所以解决方法有二个: 1.另外准备一台服务器,不需要 ...

  3. 玩转FPGA边缘视觉——4k视频图像抓取

    随着现代图像及视频处理技术的不断发展,人们对图像处理提出了新的要求,最近几年,图像的分辨率和扫描频率都有了较大范围的提升,1080P分辨率的视频已经非常流行,2K甚至4K分辨率的图像也在火热发展中. ...

  4. 【Spark】SparkStreaming与flume进行整合

    文章目录 注意事项 SparkStreaming从flume中poll数据 步骤 一.开发flume配置文件 二.启动flume 三.开发sparkStreaming代码 1.创建maven工程,导入 ...

  5. [hdu4598]二分图判定,差分约束

    题意: 给一个图,问能否给每个点分配一个实数值,使得存在一个数实数T,所有点满足:|value(i)| < T 且 u,v之间有边<=> |value(u)-value(v)| &g ...

  6. Linux --remote (ssh and VNC)

    远程管理 与个人计算机不同,服务器一般都是运行IDC机房中,所以我们通常不会接触到服务器硬件,而是通过各种远程管理方式对服务器进行控制. 常见的远程管理工具方式: -RDP(remote deskto ...

  7. 十分钟看懂AES加密

    十分钟看懂AES加密算法 今天看了Moserware的<A Stick Figure Guide to the Advanced Encryption Standard(AES)>收获了不 ...

  8. Jmeter自动发送邮件

    自动发送邮件: 1.自动发送邮件,需要三个jar,分别是:activation.jar,commons-email-1.2.jar,mail.jar,这三个文件放在ant的lib目录下 2.报错 Ex ...

  9. Python单元测试框架:unittest(二)

    一.直接使用TestCase 注意所有测试方法都需要以test开头.代码如下: import unittest class Test1(unittest.TestCase): @classmethod ...

  10. Codeforces1138-A(D题)Sushi for Two

    Arkady invited Anna for a dinner to a sushi restaurant. The restaurant is a bit unusual: it offers n ...