From 26fa82ed9c6c355343972ff1ca254b2cb4931b06 Mon Sep 17 00:00:00 2001 From: Matthijs Kooijman Date: Wed, 12 Aug 2009 17:09:41 +0200 Subject: [PATCH] Only do State packing once in register_bank. --- Alu.hs | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/Alu.hs b/Alu.hs index 1c60c04..edb4d1a 100644 --- a/Alu.hs +++ b/Alu.hs @@ -37,19 +37,21 @@ register_bank :: -> RegisterBankState -> -- State (RegisterBankState, Word) -- (State', Output) -register_bank addr we d (State s) = - case we of - Low -> -- Read - let - o = case addr of Low -> fst s; High -> snd s - in (State s, o) -- Don't change state - High -> -- Write - let - (r0, r1) = s - r0' = case addr of Low -> d; High -> r0 - r1' = case addr of High -> d; Low -> r1 - s' = (r0', r1') - in (State s', 0) -- Don't output anything useful +register_bank addr we d (State s) = (State s', o) + where + s' = case we of + Low -> s -- Read + High -> -- Write + let + (r0, r1) = s + r0' = case addr of Low -> d; High -> r0 + r1' = case addr of High -> d; Low -> r1 + in (r0', r1') + o = case we of + -- Read + Low -> case addr of Low -> fst s; High -> snd s + -- Write + High -> 0 -- Don't output anything useful -- ALU -- 2.30.2