Annotation of researchv10no/cmd/sml/src/mips/mipsreal.sml, revision 1.1.1.1

1.1       root        1: (* Copyright 1989 by AT&T Bell Laboratories *)
                      2: functor MipsReal(E: sig val emit_word : int * int -> unit end) : REALCONST = 
                      3: struct
                      4:     open E
                      5:     val halfwords = ref nil : int list ref             (* halfwords already out *)
                      6:     val count = ref 0                          (* length of halfwords *)
                      7:     fun reset_state () = (halfwords := nil; count := 0)
                      8:     fun add_half h = (count := !count + 1; halfwords := h :: (!halfwords))
                      9: 
                     10:     fun emit_four [lowest,low,high,highest] = 
                     11:                        (emit_word(low,lowest);emit_word(highest,high))
                     12:       | emit_four _ = ErrorMsg.impossible "bad floating pt constant in mips"
                     13: 
                     14:     fun emit_half h = 
                     15:         if !count = 3 then (emit_four (h::(!halfwords)); reset_state())
                     16:         else add_half h
                     17: 
                     18:     structure IEEERealConst =
                     19:        RealConst(IEEEReal(struct val emitWord = emit_half end))
                     20:     val realconst = IEEERealConst.realconst
                     21: end
                     22: 
                     23: 
                     24: 
                     25: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.