On Fri, Nov 15, 2002 at 01:38:03AM -0800, Mike Gunter wrote:
> 
>   \begin{code}
>   compute12   = mdo 
>     {                 zero r1 
>     ;         zero r2
>     ;                 addi r2 3       -- loop three times
>     ;topLoop <-       label
>     ;         addi r1 4
>     ;         addi r2 (-1)    -- decrement loop counter
>     ;         brPositive r2 topLoop
>     ;         mov r3 r1
>     ;         addi r3 (-10)   
> -- !!! Forward branch:
>     ;         brPositive r3 out -- if r1 > 10 don't add 100
>     ;         add r1 100
>     ;out <-   label
>     }
>   \end{code}
> 
> but it's not clear to me how to implement it.

I would suggest a forward declaration like in Pascal. At least it would 
fit the monadic style:

     out <- forwardLabel
     brPositive r3 out
     add r1 100
     fLabelSet out

I admit it doesn't look that nice, but it's easy to implement.

Axel.

_______________________________________________
Haskell mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/haskell

Reply via email to