diff options
| author | Eugen Wissner <belka@caraus.de> | 2024-12-02 13:57:03 +0100 |
|---|---|---|
| committer | Eugen Wissner <belka@caraus.de> | 2024-12-02 13:57:03 +0100 |
| commit | 0c40bca60b343bb289f0a567ec9ec9e9382bad2a (patch) | |
| tree | bd0906d21a34afcd571e1b1489f3982c2c98151e /lib/Language/Elna/Backend | |
| parent | 147967c04b0efeec4246b8ba0ff9b6961c9fe6cd (diff) | |
| download | elna-0c40bca60b343bb289f0a567ec9ec9e9382bad2a.tar.gz | |
Add array assignment to the IR
Diffstat (limited to 'lib/Language/Elna/Backend')
| -rw-r--r-- | lib/Language/Elna/Backend/Allocator.hs | 4 | ||||
| -rw-r--r-- | lib/Language/Elna/Backend/Intermediate.hs | 4 |
2 files changed, 6 insertions, 2 deletions
diff --git a/lib/Language/Elna/Backend/Allocator.hs b/lib/Language/Elna/Backend/Allocator.hs index f0f285b..acdf3e5 100644 --- a/lib/Language/Elna/Backend/Allocator.hs +++ b/lib/Language/Elna/Backend/Allocator.hs @@ -135,6 +135,10 @@ quadruple = \case AssignQuadruple operand1 variable -> do operand1' <- operand operand1 AssignQuadruple operand1' <$> storeVariable variable + ArrayAssignQuadruple operand1 operand2 variable -> do + operand1' <- operand operand1 + operand2' <- operand operand2 + ArrayAssignQuadruple operand1' operand2' <$> storeVariable variable operand :: Operand Variable -> Allocator r (Operand (Store r)) operand (IntOperand x) = pure $ IntOperand x diff --git a/lib/Language/Elna/Backend/Intermediate.hs b/lib/Language/Elna/Backend/Intermediate.hs index 331d044..dcf0ede 100644 --- a/lib/Language/Elna/Backend/Intermediate.hs +++ b/lib/Language/Elna/Backend/Intermediate.hs @@ -50,8 +50,8 @@ data Quadruple v | DivisionQuadruple (Operand v) (Operand v) v | GoToQuadruple Label | AssignQuadruple (Operand v) v - {-| ArrayQuadruple Variable Operand Variable - | ArrayAssignQuadruple Operand Operand Variable -} + {-| ArrayQuadruple Variable Operand Variable -} + | ArrayAssignQuadruple (Operand v) (Operand v) v | LessOrEqualQuadruple (Operand v) (Operand v) Label | GreaterOrEqualQuadruple (Operand v) (Operand v) Label | GreaterQuadruple (Operand v) (Operand v) Label |
