summaryrefslogtreecommitdiff
path: root/lib/Language/Elna/Allocator.hs
diff options
context:
space:
mode:
authorEugen Wissner <belka@caraus.de>2024-10-02 22:56:15 +0200
committerEugen Wissner <belka@caraus.de>2024-10-02 22:56:15 +0200
commitfdf56ce9d0de459dc5bd65537847ded7b02ad5c2 (patch)
tree01c13db713bfcbe3252c83d1b557ebf9fdb2b11e /lib/Language/Elna/Allocator.hs
parentcafae5c8307489e3c8a5bf3a5f9c0f0797b0ca6c (diff)
downloadelna-fdf56ce9d0de459dc5bd65537847ded7b02ad5c2.tar.gz
Negate integral expressions
Diffstat (limited to 'lib/Language/Elna/Allocator.hs')
-rw-r--r--lib/Language/Elna/Allocator.hs39
1 files changed, 0 insertions, 39 deletions
diff --git a/lib/Language/Elna/Allocator.hs b/lib/Language/Elna/Allocator.hs
deleted file mode 100644
index 3b32de4..0000000
--- a/lib/Language/Elna/Allocator.hs
+++ /dev/null
@@ -1,39 +0,0 @@
-module Language.Elna.Allocator
- ( MachineConfiguration(..)
- , Store(..)
- , allocate
- ) where
-
-import Data.HashMap.Strict (HashMap)
-import Data.Vector (Vector)
-import Language.Elna.Intermediate (Operand(..), Quadruple(..), Variable(..))
-import Language.Elna.Location (Identifier(..))
-
-newtype Store r = Store r
-
-newtype MachineConfiguration r = MachineConfiguration
- { temporaryRegister :: r
- }
-
-allocate
- :: forall r
- . MachineConfiguration r
- -> HashMap Identifier (Vector (Quadruple Variable))
- -> HashMap Identifier (Vector (Quadruple (Store r)))
-allocate MachineConfiguration{..} = fmap function
- where
- function :: Vector (Quadruple Variable) -> Vector (Quadruple (Store r))
- function = fmap quadruple
- quadruple :: Quadruple Variable -> Quadruple (Store r)
- quadruple StartQuadruple = StartQuadruple
- quadruple StopQuadruple = StopQuadruple
- quadruple (ParameterQuadruple operand1) =
- ParameterQuadruple (operand operand1)
- quadruple (CallQuadruple name count) = CallQuadruple name count
- quadruple (AddQuadruple operand1 operand2 _) =
- AddQuadruple (operand operand1) (operand operand2) (Store temporaryRegister)
- quadruple (SubtractionQuadruple operand1 operand2 _) =
- SubtractionQuadruple (operand operand1) (operand operand2) (Store temporaryRegister)
- operand :: Operand Variable -> Operand (Store r)
- operand (IntOperand x) = IntOperand x
- operand (VariableOperand _) = VariableOperand (Store temporaryRegister)