Import Upstream version 20180207
[hcoop/debian/mlton.git] / doc / guide / localhost / RSSA
CommitLineData
7f918cf1
CE
1<!DOCTYPE html>\r
2<html lang="en">\r
3<head>\r
4<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">\r
5<meta name="generator" content="AsciiDoc 8.6.9">\r
6<title>RSSA</title>\r
7<link rel="stylesheet" href="./asciidoc.css" type="text/css">\r
8<link rel="stylesheet" href="./pygments.css" type="text/css">\r
9\r
10\r
11<script type="text/javascript" src="./asciidoc.js"></script>\r
12<script type="text/javascript">\r
13/*<![CDATA[*/\r
14asciidoc.install();\r
15/*]]>*/\r
16</script>\r
17<link rel="stylesheet" href="./mlton.css" type="text/css">\r
18</head>\r
19<body class="article">\r
20<div id="banner">\r
21<div id="banner-home">\r
22<a href="./Home">MLton 20180207</a>\r
23</div>\r
24</div>\r
25<div id="header">\r
26<h1>RSSA</h1>\r
27</div>\r
28<div id="content">\r
29<div id="preamble">\r
30<div class="sectionbody">\r
31<div class="paragraph"><p><a href="RSSA">RSSA</a> is an <a href="IntermediateLanguage">IntermediateLanguage</a>, translated from <a href="SSA2">SSA2</a> by\r
32<a href="ToRSSA">ToRSSA</a>, optimized by <a href="RSSASimplify">RSSASimplify</a>, and translated by\r
33<a href="ToMachine">ToMachine</a> to <a href="Machine">Machine</a>.</p></div>\r
34</div>\r
35</div>\r
36<div class="sect1">\r
37<h2 id="_description">Description</h2>\r
38<div class="sectionbody">\r
39<div class="paragraph"><p><a href="RSSA">RSSA</a> is a <a href="IntermediateLanguage">IntermediateLanguage</a> that makes representation\r
40decisions explicit.</p></div>\r
41</div>\r
42</div>\r
43<div class="sect1">\r
44<h2 id="_implementation">Implementation</h2>\r
45<div class="sectionbody">\r
46<div class="ulist"><ul>\r
47<li>\r
48<p>\r
49<a href="https://github.com/MLton/mlton/blob/master/mlton/backend/rssa.sig"><span class="monospaced">rssa.sig</span></a>\r
50</p>\r
51</li>\r
52<li>\r
53<p>\r
54<a href="https://github.com/MLton/mlton/blob/master/mlton/backend/rssa.fun"><span class="monospaced">rssa.fun</span></a>\r
55</p>\r
56</li>\r
57</ul></div>\r
58</div>\r
59</div>\r
60<div class="sect1">\r
61<h2 id="_type_checking">Type Checking</h2>\r
62<div class="sectionbody">\r
63<div class="paragraph"><p>The new type language is aimed at expressing bit-level control over\r
64layout and associated packing of data representations. There are\r
65singleton types that denote constants, other atomic types for things\r
66like integers and reals, and arbitrary sum types and sequence (tuple)\r
67types. The big change to the type system is that type checking is now\r
68based on subtyping, not type equality. So, for example, the singleton\r
69type <span class="monospaced">0xFFFFEEBB</span> whose only inhabitant is the eponymous constant is a\r
70subtype of the type <span class="monospaced">Word32</span>.</p></div>\r
71</div>\r
72</div>\r
73<div class="sect1">\r
74<h2 id="_details_and_notes">Details and Notes</h2>\r
75<div class="sectionbody">\r
76<div class="paragraph"><p>SSA is an abbreviation for Static Single Assignment. The <a href="RSSA">RSSA</a>\r
77<a href="IntermediateLanguage">IntermediateLanguage</a> is a variant of SSA.</p></div>\r
78</div>\r
79</div>\r
80</div>\r
81<div id="footnotes"><hr></div>\r
82<div id="footer">\r
83<div id="footer-text">\r
84</div>\r
85<div id="footer-badges">\r
86</div>\r
87</div>\r
88</body>\r
89</html>\r