X-Git-Url: https://git.stderr.nl/gitweb?a=blobdiff_plain;f=Alu.hs;fp=Alu.hs;h=ea9bae8cd551db729f16850f0146b7a756c64197;hb=56b4b2edb9bd1d06cafefc12a06feb7ef5622291;hp=ca2dbe9180613a3db75b55843660299246f809aa;hpb=023e8550e96ed275acf746580642c9f6fee60329;p=matthijs%2Fmaster-project%2Fc%CE%BBash.git diff --git a/Alu.hs b/Alu.hs index ca2dbe9..ea9bae8 100644 --- a/Alu.hs +++ b/Alu.hs @@ -56,28 +56,16 @@ alu :: AluOp -> Bit -> Bit -> Bit alu High a b = a `hwand` b alu Low a b = a `hwor` b -salu :: AluOp -> Bit -> Bit -> () -> ((), Bit) -salu High a b s = (s, a `hwand` b) -salu Low a b s = (s, a `hwor` b) - type ExecState = (RegisterBankState, Bit, Bit) exec :: (RegAddr, Bit, AluOp) -> ExecState -> (ExecState, (Bit)) -- Read & Exec -exec (addr, Low, op) s = +exec (addr, we, op) s = (s', z') where (reg_s, t, z) = s - (reg_s', t') = register_bank (addr, Low, dontcare) reg_s + (reg_s', t') = register_bank (addr, we, z) reg_s z' = alu op t' t s' = (reg_s', t', z') --- Write -exec (addr, High, op) s = - (s', dontcare) - where - (reg_s, t, z) = s - (reg_s', _) = register_bank (addr, High, z) reg_s - s' = (reg_s', t, z) - -- vim: set ts=8 sw=2 sts=2 expandtab: