Home My Page Projects Code Snippets Project Openings SML/NJ
Summary Activity Forums Tracker Lists Tasks Docs Surveys News SCM Files

SCM Repository

[smlnj] View of /sml/trunk/src/MLRISC/instructions/stream.sig
ViewVC logotype

View of /sml/trunk/src/MLRISC/instructions/stream.sig

Parent Directory Parent Directory | Revision Log Revision Log


Revision 984 - (download) (as text) (annotate)
Wed Nov 21 19:00:08 2001 UTC (17 years, 11 months ago) by george
File size: 1528 byte(s)
  Implemented a complete redesign of MLRISC pseudo-ops. Now there
  ought to never be any question of incompatabilities with
  pseudo-op syntax expected by host assemblers.

  For now, only modules supporting GAS syntax are implemented
  but more should follow, such as MASM, and vendor assembler
  syntax, e.g. IBM as, Sun as, etc.
(*
 * This is a generic instruction stream datatype.
 * Components such as assemblers, machine code emitters, instruction
 * selection modules communicate with each via this interface.
 *
 * -- Allen
 *)

signature INSTRUCTION_STREAM =
sig

   structure P : PSEUDO_OPS
   datatype ('a,'b,'c,'d) stream =
      STREAM of
      { beginCluster: int -> unit,             (* start new compilation unit *)
        endCluster  : 'b -> 'd,                      (* end compilation unit *)
        emit        : 'a -> unit,                        (* emit instruction *)
        pseudoOp    : P.pseudo_op -> unit,               (* emit a pseudo op *)
        defineLabel : Label.label -> unit,           (* define a local label *)
        entryLabel  : Label.label -> unit,       (* define an external label *)
        comment     : string -> unit,                        (* emit comment *)
        annotation  : Annotations.annotation -> unit,      (* add annotation *)
        getAnnotations: unit -> Annotations.propList ref, (* get annotations *) 
        exitBlock   : 'c -> unit              (* mark the end of a procedure *)
      }

   (* Note:
    o  Each compilation unit should be wrapped between beginCluster/endCluster.
     
    o  The method annotation adds an annotation to the current basic block,
       not to the current instruction. 
       
    o  The method comment add a comment to the current basic block.
       Usually comment(msg) is the same as 
          annotation(BasicAnnotations.COMMENT msg).
    *)

end

root@smlnj-gforge.cs.uchicago.edu
ViewVC Help
Powered by ViewVC 1.0.0