diff options
| author | Eugen Wissner <belka@caraus.de> | 2024-10-02 22:56:15 +0200 |
|---|---|---|
| committer | Eugen Wissner <belka@caraus.de> | 2024-10-02 22:56:15 +0200 |
| commit | fdf56ce9d0de459dc5bd65537847ded7b02ad5c2 (patch) | |
| tree | 01c13db713bfcbe3252c83d1b557ebf9fdb2b11e /lib/Language/Elna/Allocator.hs | |
| parent | cafae5c8307489e3c8a5bf3a5f9c0f0797b0ca6c (diff) | |
| download | elna-fdf56ce9d0de459dc5bd65537847ded7b02ad5c2.tar.gz | |
Negate integral expressions
Diffstat (limited to 'lib/Language/Elna/Allocator.hs')
| -rw-r--r-- | lib/Language/Elna/Allocator.hs | 39 |
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) |
