Skip to content

Commit cb34e7e

Browse files
committed
Register classes
Classes to store information about registers and interact with them Signed-off-by: Daniel Garcia <[email protected]>
1 parent 8993331 commit cb34e7e

File tree

1 file changed

+37
-0
lines changed

1 file changed

+37
-0
lines changed

tbot_contrib/register/register.py

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
import typing
2+
3+
4+
class Register:
5+
def __init__(self, name: str, address: int, width: int):
6+
self.name = name
7+
self.address = address
8+
assert width in [8, 16, 32, 64], f"Unsupported register width: {width!r}"
9+
self.width = width
10+
11+
12+
class RegisterMap:
13+
def __init__(self, registers_list: typing.List[Register] = []) -> None:
14+
self.registers_dict = {}
15+
if len(registers_list) > 0:
16+
for register in registers_list:
17+
self.registers_dict[register.name] = register
18+
19+
def add_register(self, register: Register) -> None:
20+
if register.name in self.registers_dict:
21+
raise Exception(
22+
f"There is already a register with the name: {register.name}"
23+
)
24+
self.registers_dict[register.name] = register
25+
26+
def remove_register(self, name: str) -> Register:
27+
if name in self.registers_dict:
28+
return self.registers_dict.pop(name)
29+
raise Exception(f"There is not a register with the name: {name}")
30+
31+
def get_register(self, name: str) -> Register:
32+
if name in self.registers_dict:
33+
return self.registers_dict[name]
34+
raise Exception(f"There is not a register with the name: {name}")
35+
36+
def get_all_registers(self) -> typing.List[Register]:
37+
return list(self.registers_dict.values())

0 commit comments

Comments
 (0)