This file is indexed.

/usr/share/doc/smlnj-doc/mlrisc/mlrisc-gen.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
<!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN">
<!-- Generated by mltex2html -->
<!-- do not edit this file -->

<html>
  <head>
     <title> MLRisc Generation </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"><font color="#486591"><b>MLRisc Generation</b></font></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">Instruction Streams</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>MLRisc Generation</b></font></h1></center>
    <hr> 
    
    
   Every compiler will eventually compile down to an abstract machine
   that it believes will execute source programs efficiently. The
   abstract machine will typically consists of abstract machine
   registers and instructions, one or more stacks, and parameter
   passing conventions.  The hope is that all this will map down
   efficiently onto the target machine. Indeed, the abstract machine
   should be reasonably close to architectures that are envisioned as
   possible targets. Several step need to be followed in the generation
   of MLRisc.
 <p>
   <ol>
    <li> The first step in generating target machine code is to define
    the MLRisc intermediate representation after it has been
    appropriately specialized. The interfaces that describe the
    dimensions of specialization are quite simple. Depending on the
    compiler, these may be target dependent; for example, in the SML/NJ
    compiler, the encoding of registers used to indicate the roots of
    garbage collection depend on how the runtime system decodes the
    information.
 <p>
   <li> The only real connection between the MLRisc intermediate
   representation and the target machine is that the first
   <math class="inline"><i>0..K-1</i></math> MLRisc registers map onto the first <math class="inline"><i>K</i></math>
   physical registers on the target machine. Thus some mapping of
   dedicated abstract machine registers to physical target registers is
   required. It is not always necessary to map abstract machine
   registers to physical machine registers. For example, on
   architectures like the x86 with few registers, some abstract machine
   registers may be mapped to fixed memory locations. Thus an abstract
   machine register like the <tt>maskReg</tt> may have something like:
 <font color="#000000"><small><pre>
   LOAD(32, LABEL maskRegLab) 
 </pre></small></font>
 spliced instead.
 <p>
   <li> The unit of compilation is called a 
    <a href="cluster.html">cluster</a> which
   is the smallest unit for inter-procedural optimizations. A cluster
   will typically consist of several entry points that may call each
   other, as well as call local functions in the module. For maximum
   flexibility, the parameter passing convention for local functions
   should be specialized by the <a href="mlrisc-ra.html">register allocator</a>.
 <p>
    Once the MLRisc trees for a cluster have been built, they must
   be converted into target assembly or machine code. This is done by
   building up a function (<font color="#ff0000">codegen</font>) that
   glues together optimizations modules that have been specialized. For
   example, the target instruction set must be specialized to hold the
   MLRisc constants; the flowgraph must be specialized to carry these
   instructions as well as the MLRisc pseudo-ops; the optimization
   modules must know about several front end constraints such as how to
   spill registers.
   </ol>
 <p>
    If the module that translates the abstract machine instructions
   into MLRisc instructions has been appropriately parameterized, then
   it can be reused for multiple target architectures. For high level
   languages it is better to generate MLRisc instructions from the high
   level intermediate form used by the front end of the compiler.

    <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>