From 93745d4c6bfe62d4489029338b2b6dfd7c2471b3 Mon Sep 17 00:00:00 2001 From: Jose Rodriguez Date: Mon, 5 Jan 2026 20:11:55 +0000 Subject: [PATCH] refact: use a ICInstruction dummy interface This allows defining another IR instruction set --- src/arch/interface/icinstruction.py | 5 +++++ src/arch/interface/quad.py | 3 ++- src/arch/z80/backend/icinstruction.py | 4 ++-- 3 files changed, 9 insertions(+), 3 deletions(-) create mode 100644 src/arch/interface/icinstruction.py diff --git a/src/arch/interface/icinstruction.py b/src/arch/interface/icinstruction.py new file mode 100644 index 000000000..7a75eb375 --- /dev/null +++ b/src/arch/interface/icinstruction.py @@ -0,0 +1,5 @@ +from enum import StrEnum + + +class ICInstruction(StrEnum): + pass diff --git a/src/arch/interface/quad.py b/src/arch/interface/quad.py index 4606dafce..d649edaf3 100644 --- a/src/arch/interface/quad.py +++ b/src/arch/interface/quad.py @@ -7,9 +7,10 @@ from dataclasses import dataclass -from src.arch.z80.backend.icinstruction import ICInstruction from src.symbols.symbol_ import Symbol +from .icinstruction import ICInstruction + __all__ = ("Quad",) diff --git a/src/arch/z80/backend/icinstruction.py b/src/arch/z80/backend/icinstruction.py index 32f09ff73..0b9ed3d5b 100644 --- a/src/arch/z80/backend/icinstruction.py +++ b/src/arch/z80/backend/icinstruction.py @@ -5,17 +5,17 @@ # See https://www.gnu.org/licenses/agpl-3.0.html for details. # -------------------------------------------------------------------- -from enum import StrEnum from functools import lru_cache from typing import Any +from src.arch.interface.icinstruction import ICInstruction as ICInstructionInterface from src.arch.z80.backend.exception import InvalidICError __all__ = ("ICInstruction",) # HINT: Do not use Enums here. They cannot be subclassed -class ICInstruction(StrEnum): +class ICInstruction(ICInstructionInterface): ADDU8 = "addu8" ADDI8 = "addi8" ADDI16 = "addi16"