blob: f2be5cba1f91bf7efa6cf52bbfdb8a06bf146bb1 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
from typing import Iterable
class Arch():
def __init__(self, archname: str, regnames: Iterable[str]):
self.archname = archname
self.regnames = set(name.upper() for name in regnames)
def to_regname(self, name: str) -> str | None:
"""Transform a string into a standard register name.
Override to implement things like name aliases etc.
:param name: The possibly non-standard name to look up.
:return: The 'corrected' register name, or None if `name` cannot be
transformed into a register name.
"""
name = name.upper()
if name in self.regnames:
return name
return None
def __eq__(self, other):
return self.archname == other.archname
def __repr__(self) -> str:
return self.archname
|