summaryrefslogtreecommitdiff
path: root/lib/Language/Elna/CodeGenerator.hs
blob: 704f6259bd040f450c6fbf456f934ae24410b3f2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
module Language.Elna.CodeGenerator
    ( generateCode
    ) where

import Data.Vector (Vector)
import qualified Data.Vector as Vector
import Language.Elna.Intermediate (Quadruple(..))
import qualified Language.Elna.Architecture.RiscV as RiscV
import Language.Elna.SymbolTable (SymbolTable)

generateCode :: SymbolTable -> Vector Quadruple -> Vector RiscV.Instruction
generateCode _ _ = Vector.fromList
    [ RiscV.CallInstruction "printi"
    , RiscV.Instruction RiscV.OpImm $ RiscV.I RiscV.A0 RiscV.ADDI RiscV.Zero 0
    , RiscV.Instruction RiscV.OpImm $ RiscV.I RiscV.A7 RiscV.ADDI RiscV.Zero 93
    , RiscV.Instruction RiscV.System $ RiscV.Type RiscV.Zero RiscV.PRIV RiscV.Zero RiscV.ECALL
    ]