diff options
Diffstat (limited to 'lib/Language/Elna/Backend')
| -rw-r--r-- | lib/Language/Elna/Backend/Allocator.hs | 10 | ||||
| -rw-r--r-- | lib/Language/Elna/Backend/Intermediate.hs | 12 |
2 files changed, 16 insertions, 6 deletions
diff --git a/lib/Language/Elna/Backend/Allocator.hs b/lib/Language/Elna/Backend/Allocator.hs index bdbccab..2b410a3 100644 --- a/lib/Language/Elna/Backend/Allocator.hs +++ b/lib/Language/Elna/Backend/Allocator.hs @@ -54,6 +54,16 @@ allocate MachineConfiguration{..} = fmap function quadruple (GoToQuadruple label) = GoToQuadruple label quadruple (EqualQuadruple operand1 operand2 goToLabel) = EqualQuadruple (operand operand1) (operand operand2) goToLabel + quadruple (NonEqualQuadruple operand1 operand2 goToLabel) = + NonEqualQuadruple (operand operand1) (operand operand2) goToLabel + quadruple (LessQuadruple operand1 operand2 goToLabel) = + LessQuadruple (operand operand1) (operand operand2) goToLabel + quadruple (GreaterQuadruple operand1 operand2 goToLabel) = + GreaterQuadruple (operand operand1) (operand operand2) goToLabel + quadruple (LessOrEqualQuadruple operand1 operand2 goToLabel) = + LessOrEqualQuadruple (operand operand1) (operand operand2) goToLabel + quadruple (GreaterOrEqualQuadruple operand1 operand2 goToLabel) = + GreaterOrEqualQuadruple (operand operand1) (operand operand2) goToLabel operand :: Operand Variable -> Operand (Store r) operand (IntOperand x) = IntOperand x operand (VariableOperand (TempVariable index)) diff --git a/lib/Language/Elna/Backend/Intermediate.hs b/lib/Language/Elna/Backend/Intermediate.hs index 6d3a1af..f1a5d7a 100644 --- a/lib/Language/Elna/Backend/Intermediate.hs +++ b/lib/Language/Elna/Backend/Intermediate.hs @@ -43,12 +43,12 @@ data Quadruple v | GoToQuadruple Label {-| AssignQuadruple Operand Variable | ArrayQuadruple Variable Operand Variable - | ArrayAssignQuadruple Operand Operand Variable - | NonEqualQuadruple Operand Operand Label - | LessQuadruple Operand Operand Label - | GreaterQuadruple Operand Operand Label - | LessOrEqualQuadruple Operand Operand Label - | GreaterOrEqualQuadruple Operand Operand Label -} + | ArrayAssignQuadruple Operand Operand Variable -} + | LessOrEqualQuadruple (Operand v) (Operand v) Label + | GreaterOrEqualQuadruple (Operand v) (Operand v) Label + | GreaterQuadruple (Operand v) (Operand v) Label + | LessQuadruple (Operand v) (Operand v) Label + | NonEqualQuadruple (Operand v) (Operand v) Label | EqualQuadruple (Operand v) (Operand v) Label | LabelQuadruple Label deriving (Eq, Show) |
