模拟计数

模拟pattern里的攻击者地址的WL计数器,A_list

 

Act命令来时:

[Act,addr,cnt]

在A_list里找addr(一定能找到,因为就是这么设置的),并把来的命令里的cnt加到A_list对应的地址的cnt上。

得到加了cnt之后的addr和新cnt。

把[Act,addr,新cnt]给LUT表,按照LUT表Act进行正常处理。

 

RHR命令来时:

把RHR命令给LUT表,按照LUT表RHR进行正常处理,它输出的地址就是要刷的地址。

把这个要刷的地址的在A_list中的cnt值清零。

 

class AddressTable:
    def __init__(self, n):
        # 初始化时直接将 count 设为浮点数 0.0
        self.rows = [{'address': f'A{i+1}', 'count': 0.0} for i in range(n)]
        self.address_map = {row['address']: row for row in self.rows}
    
    def process_command(self, command):
        cmd = command[0]
        if cmd == 'Act':
            addr = command[1]
            cnt = command[2]
            if addr not in self.address_map:
                raise ValueError(f"Address {addr} not found")
            if not isinstance(cnt, (int, float)):
                raise ValueError("cnt值必须是整数或浮点数")
            row = self.address_map[addr]
            row['count'] += float(cnt)  # 显式转换为浮点数
            return ['Act', addr, row['count']]
        elif cmd == 'RHR':
            addr = command[1]
            if addr not in self.address_map:
                raise ValueError(f"Address {addr} not found")
            row = self.address_map[addr]
            row['count'] = 0.0  # 重置为浮点数 0.0
            return ['RHR', addr, 0.0]
        elif cmd == 'EXP':
            if len(command) != 1:
                raise ValueError("EXP命令格式应为 ['EXP']")
            export_data = [[row['address'], row['count']] for row in self.rows]
            return ['EXP', export_data]
        else:
            raise ValueError("无效命令")

 下面试一下

# 初始化一个包含3行的表
table = AddressTable(3)

# 导出初始状态
print(table.process_command(['EXP'])) 
# 输出: ['EXP', [['A1', 0], ['A2', 0], ['A3', 0]]]

# 执行Act命令并再次导出
table.process_command(['Act', 'A2', 5])
print(table.process_command(['EXP']))  
# 输出: ['EXP', [['A1', 0], ['A2', 5], ['A3', 0]]]

table.process_command(['Act', 'A3', 8])
print(table.process_command(['EXP']))  

# 执行RHR命令后导出
table.process_command(['RHR', 'A2'])
print(table.process_command(['EXP']))  
# 输出: ['EXP', [['A1', 0], ['A2', 0], ['A3', 0]]]

  

posted @ 2025-05-10 11:39  李里力离  阅读(11)  评论(0)    收藏  举报