From: Matthijs Kooijman Date: Thu, 5 Feb 2009 08:18:08 +0000 (+0100) Subject: Remove the empty state of the alu function. X-Git-Url: https://git.stderr.nl/gitweb?a=commitdiff_plain;h=4cc22e06d666e970b6bea28c6fb43c4c3f7fd834;p=matthijs%2Fmaster-project%2Fc%CE%BBash.git Remove the empty state of the alu function. --- diff --git a/Alu.hs b/Alu.hs index 40f7622..b888fc9 100644 --- a/Alu.hs +++ b/Alu.hs @@ -14,7 +14,7 @@ program = [ (High, High, DontCare) -- r1 = z (0) ] -initial_state = (Regs Low High, (), Low, Low) +initial_state = (Regs Low High, Low, Low) -- Register bank @@ -43,31 +43,30 @@ register_bank (addr, High, d) s = -- Write -- ALU -type AluState = () type AluOp = Bit -alu :: (AluOp, Bit, Bit) -> AluState -> (AluState, Bit) -alu (High, a, b) s = ((), a `hwand` b) -alu (Low, a, b) s = ((), a `hwor` b) +alu :: (AluOp, Bit, Bit) -> Bit +alu (High, a, b) = a `hwand` b +alu (Low, a, b) = a `hwor` b -type ExecState = (RegisterBankState, AluState, Bit, Bit) +type ExecState = (RegisterBankState, Bit, Bit) exec :: (RegAddr, Bit, AluOp) -> ExecState -> (ExecState, ()) -- Read & Exec exec (addr, Low, op) s = (s', ()) where - (reg_s, alu_s, t, z) = s + (reg_s, t, z) = s (reg_s', t') = register_bank (addr, Low, DontCare) reg_s - (alu_s', z') = alu (op, t', t) alu_s - s' = (reg_s', alu_s', t', z') + z' = alu (op, t', t) + s' = (reg_s', t', z') -- Write exec (addr, High, op) s = (s', ()) where - (reg_s, alu_s, t, z) = s + (reg_s, t, z) = s (reg_s', _) = register_bank (addr, High, z) reg_s - s' = (reg_s', alu_s, t, z) + s' = (reg_s', t, z) -- vim: set ts=8 sw=2 sts=2 expandtab: