/usr/share/doc/smlnj-doc/mlrisc/streams.html is in smlnj-doc 110.78-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 | <!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN">
<!-- Generated by mltex2html -->
<!-- do not edit this file -->
<html>
<head>
<title> Instruction Streams </title>
</head>
<body bgcolor="#ffffff" text="#000020"
link="navy" vlink="gray" alink="maroon">
<table border=0>
<tr>
<td valign=top align=left width="170">
<!-- table of contents -->
<table cellpadding=0 cellspacing=0 border=0 width=170 bgcolor="#e6e6e6">
<tr><td>
</td></tr><tr><td>
<table bgcolor="#486591" width="100%" border=0
cellpadding=0 cellspacing=0>
<tr><td align=center><font color="ffffff">
MLRISC
</font>
</td></tr></table><tr><td>
<a href="INTRO.html"><font size="-1">MLRISC</font></a><br>
<a href="contributors.html"><font size="-1">Contributors</font></a><br>
<a href="requirements.html"><font size="-1">Requirements</font></a><br>
<a href="availability.html"><font size="-1">How to Obtain MLRISC</font></a><br>
</td></tr><tr><td>
<table bgcolor="#486591" width="100%" border=0
cellpadding=0 cellspacing=0>
<tr><td align=center><font color="ffffff">
Overview
</font>
</td></tr></table><tr><td>
<a href="problem.html"><font size="-1">Problem Statement</font></a><br>
<a href="contributions.html"><font size="-1">Contributions</font></a><br>
<a href="mlrisc-compiler.html"><font size="-1">MLRISC Based Compiler</font></a><br>
<a href="mlrisc-ir-rep.html"><font size="-1">MLRISC Intermediate Representation</font></a><br>
<a href="mlrisc-gen.html"><font size="-1">MLRisc Generation</font></a><br>
<a href="backend-opt.html"><font size="-1">Back End Optimizations</font></a><br>
<a href="mlrisc-ra.html"><font size="-1">Register Allocation</font></a><br>
<a href="mlrisc-md.html"><font size="-1">Machine Description</font></a><br>
<a href="gc.html"><font size="-1">Garbage Collection Safety</font></a><br>
<a href="sys-integration.html"><font size="-1">System Integration</font></a><br>
<a href="optimizations.html"><font size="-1">Optimizations</font></a><br>
<a href="mlrisc-graphics.html"><font size="-1">Graphical Interface</font></a><br>
<a href="line-counts.html"><font size="-1">Line Counts</font></a><br>
<a href="systems.html"><font size="-1">Systems Using MLRISC</font></a><br>
<a href="future-work.html"><font size="-1">Future Work</font></a><br>
</td></tr><tr><td>
<table bgcolor="#486591" width="100%" border=0
cellpadding=0 cellspacing=0>
<tr><td align=center><font color="ffffff">
System
</font>
</td></tr></table><tr><td>
<a href="mlrisc-arch.html"><font size="-1">Architecture of MLRISC</font></a><br>
<a href="mltree.html"><font size="-1">The MLTREE Language</font></a><br>
<a href="mltree-ext.html"><font size="-1">MLTree Extensions</font></a><br>
<a href="mltree-util.html"><font size="-1">MLTree Utilities</font></a><br>
<a href="instrsel.html"><font size="-1">Instruction Selection</font></a><br>
<a href="asm.html"><font size="-1">Assemblers</font></a><br>
<a href="mc.html"><font size="-1">Machine Code Emitters</font></a><br>
<a href="delayslots.html"><font size="-1">Delay Slot Filling</font></a><br>
<a href="span-dep.html"><font size="-1">Span Dependency Resolution</font></a><br>
<a href="graphs.html"><font size="-1">The Graph Library</font></a><br>
<a href="graphics.html"><font size="-1">The Graph Visualization Library</font></a><br>
<a href="compiler-graphs.html"><font size="-1">Basic Compiler Graphs</font></a><br>
<a href="mlrisc-ir.html"><font size="-1">The MLRISC IR</font></a><br>
<a href="SSA.html"><font size="-1">SSA Optimizations</font></a><br>
<a href="ILP.html"><font size="-1">ILP Optimizations</font></a><br>
<a href="VLIW.html"><font size="-1">Optimizations for VLIW/EPIC Architectur...</font></a><br>
<a href="ra.html"><font size="-1">Register Allocator</font></a><br>
</td></tr><tr><td>
<table bgcolor="#486591" width="100%" border=0
cellpadding=0 cellspacing=0>
<tr><td align=center><font color="ffffff">
Back Ends
</font>
</td></tr></table><tr><td>
<a href="alpha.html"><font size="-1">The Alpha Back End</font></a><br>
<a href="hppa.html"><font size="-1">The PA RISC Back End</font></a><br>
<a href="sparc.html"><font size="-1">The Sparc Back End</font></a><br>
<a href="x86.html"><font size="-1">The Intel x86 Back End</font></a><br>
<a href="ppc.html"><font size="-1">The PowerPC Back End</font></a><br>
<a href="mips.html"><font size="-1">The MIPS Back End</font></a><br>
<a href="C6.html"><font size="-1">The TI C6x Back End</font></a><br>
</td></tr><tr><td>
<table bgcolor="#486591" width="100%" border=0
cellpadding=0 cellspacing=0>
<tr><td align=center><font color="ffffff">
Basic Types
</font>
</td></tr></table><tr><td>
<a href="annotations.html"><font size="-1">Annotations</font></a><br>
<a href="cells.html"><font size="-1">Cells</font></a><br>
<a href="cluster.html"><font size="-1">Cluster</font></a><br>
<a href="constants.html"><font size="-1">Client Defined Constants</font></a><br>
<a href="pseudo-ops.html"><font size="-1">Client Defined Pseudo Ops</font></a><br>
<a href="instructions.html"><font size="-1">Instructions</font></a><br>
<a href="streams.html"><font size="-1"><font color="#486591"><b>Instruction Streams</b></font></font></a><br>
<a href="labelexp.html"><font size="-1">Label Expressions</font></a><br>
<a href="labels.html"><font size="-1">Labels</font></a><br>
<a href="regions.html"><font size="-1">Regions</font></a><br>
<a href="regmap.html"><font size="-1">Regmap</font></a><br>
</td></tr>
</table>
<!-- end of table of contents -->
</td>
<td width=2> </td>
<td valign=top align=left>
<center><h1><font color="#486591"><b>Instruction Streams</b></font></h1></center>
<hr>
<!-- table of contents -->
<table cellpadding=0 cellspacing=0 border=0 align=right bgcolor="#e6e6e6">
<tr><td>
</td></tr><tr><td>
<table bgcolor="#486591" width="100%" border=0
cellpadding=0 cellspacing=0>
<tr><td align=center><font color="ffffff">
Instruction Streams
</font>
</td></tr></table><tr><td>
-<a href="#link0000"><font size="-1" color="#486591">Overview</font></a><br>
-<a href="#link0001"><font size="-1" color="#486591">The Details</font></a><br>
-<a href="#link0002"><font size="-1" color="#486591">The protocol</font></a><br>
</td></tr>
</table>
<!-- end of table of contents -->
<a name="link0000"></a>
<h3><font color="#486591">Overview</font></h3>
An <font color="#ff0000">instruction stream</font>
is an abstraction used by MLRISC to describe linearized instructions.
This abstraction turns out to fit the function of
many MLRISC modules. For example,
a phase such as <a href="instrsel.html">Instruction Selection</a>
can be viewed as taking an stream of
<a href="mltree.html">MLTREE</a> statements and return a
stream of <a href="instructions.html">instructions</a>. Similarly,
phases such as <a href="asm.html">assembly output</a> and
<a href="mc.html">machine code generation</a> can be seen
as taking a stream of instructions and
returning a stream of characters and a stream of bytes.
<p>
<a name="link0001"></a>
<h3><font color="#486591">The Details</font></h3>
An instruction stream satisfy the following abstract signature:
<font color="#000000"><small><pre>
<font color="#6060a0"><b>signature</b></font> <a href="../../instructions/stream.sig" target=code>INSTRUCTION_STREAM</a> =
<font color="#6060a0"><b><font color="#6060a0"><b>sig</b></font></b></font>
<font color="#6060a0"><b>structure</b></font> P : <a href="pseudo-ops.html">PSEUDO_OPS</a>
<font color="#6060a0"><b>datatype</b></font> (<font color="#00aaaa">'a</font>,<font color="#00aaaa">'b</font>,<font color="#00aaaa">'c</font>,<font color="#00aaaa">'d</font>,<font color="#00aaaa">'e</font>,<font color="#00aaaa">'f</font>) stream =
STREAM <font color="#6060a0"><b>of</b></font>
{ beginCluster: int -> <font color="#00aaaa">'b</font>,
endCluster : <font color="#00aaaa">'c</font> -> unit,
emit : <font color="#00aaaa">'a</font>,
pseudoOp : P.pseudo_op -> unit,
defineLabel : Label.label -> unit,
entryLabel : Label.label -> unit,
comment : string -> unit,
annotation : Annotations.annotation -> unit,
exitBlock : <font color="#00aaaa">'d</font> -> unit,
alias : <font color="#00aaaa">'e</font> -> unit,
phi : <font color="#00aaaa">'f</font> -> unit
}
<font color="#6060a0"><b>end</b></font>
</pre></small></font>
This type is specialized in other modules as such the
<a href="asm.html">assembler</a>, the <a href="mc.html">machine code emitter</a>,
and the <a href="instrsel.html">instruction selection modules</a>.
<a name="link0002"></a>
<h3><font color="#486591">The protocol</font></h3>
All instruction streams, irrespective of their actual types,
follow the following protocol:
<ul>
<li> The method <tt>beginCluster</tt> should be called at the beginning of
the stream to mark the start of a new compilation unit.
The integer passed to this method is the number
of bytes in the stream. This integer is only used for
machine code emitter, which uses it to allocate space for the
code string.
<li> The method <tt>endCluster</tt> should be called when the entire
compilation unit has been sent.
<li> In between these calls, the following methods can be called in any
order:
<ul>
<li> <tt>emit</tt> -- this method emits an instruction. It takes
a <a href="regmap.html">regmap</a> as argument.
<li> <tt>pseudoOp</tt> -- this method emits a pseudo op.
<li> <tt>defineLabel</tt> -- this method defines a <em>local</em> label, i.e.
a label that is only referenced within the same compilation unit.
<li> <tt>entryLabel</tt> -- this method defines an <em>enternal</em> label that
marks an procedure entry, and may be referenced from other
compilation units.
<li> <tt>comment</tt> -- this emits a comment string
<li> <tt>annotation</tt> -- this function attaches an annotation to
the current basic block.
<li> <tt>exitBlock</tt> --
this marks the current block as an procedure exit.
</ul>
</ul>
<hr>
<table cellpadding=0 cellspacing=0 width="100%">
<tr>
<td align=left>
<table>
<tr><td><font size="-1">
<a href="mailto:george@research.bell-labs.com">Lal George</a>
</font></td></tr>
<tr><td><font size="-1">
<a href="mailto:leunga@cs.nyu.edu">Allen Leung</a>
</font></td></tr>
</table>
</td>
<td align=right>
<a href="http://cm.bell-labs.com/cm/cs/what/smlnj/index.html">
<img src="graphics/smlnj.jpg" width=80 height=50
alt="SML/NJ" border=0>
</a>
<a href="http://validator.w3.org/check?url=http://www.cs.nyu.edu/leunga/MLRISC/Doc/html/">
<img src="graphics/vh401.gif" width=88 height=31
alt="Validate this page" border=0>
</a>
</td>
</tr>
<tr> <td align=left>
<font size="-1">
<i> Generated by
<a href="mltex.html">
<font color="#007777">mltex2html</font>
</a>
</i>
</font>
</td>
</tr>
<tr> <td>
<font size="-2">
Last modified: Thu Jul 23 11:23:33 UTC 2015 by buildd@lgw01-47
</font>
</td>
</tr>
</table>
</td>
</tr>
</table>
</body>
</html>
|