<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="AsciiDoc 8.6.10">
<title>RSSA</title>
<link rel="stylesheet" href="./asciidoc.css" type="text/css">
<link rel="stylesheet" href="./pygments.css" type="text/css">


<script type="text/javascript" src="./asciidoc.js"></script>
<script type="text/javascript">
/*<![CDATA[*/
asciidoc.install();
/*]]>*/
</script>
<link rel="stylesheet" href="./mlton.css" type="text/css">
</head>
<body class="article">
<div id="banner">
<div id="banner-home">
<a href="./Home">MLton 20201002</a>
</div>
</div>
<div id="header">
<h1>RSSA</h1>
</div>
<div id="content">
<div id="preamble">
<div class="sectionbody">
<div class="paragraph"><p><a href="RSSA">RSSA</a> is an <a href="IntermediateLanguage">IntermediateLanguage</a>, translated from <a href="SSA2">SSA2</a> by
<a href="ToRSSA">ToRSSA</a>, optimized by <a href="RSSASimplify">RSSASimplify</a>, and translated by
<a href="ToMachine">ToMachine</a> to <a href="Machine">Machine</a>.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">Description</h2>
<div class="sectionbody">
<div class="paragraph"><p><a href="RSSA">RSSA</a> is a <a href="IntermediateLanguage">IntermediateLanguage</a> that makes representation
decisions explicit.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_implementation">Implementation</h2>
<div class="sectionbody">
<div class="ulist"><ul>
<li>
<p>
<a href="https://github.com/MLton/mlton/blob/master/mlton/backend/rssa.sig"><span class="monospaced">rssa.sig</span></a>
</p>
</li>
<li>
<p>
<a href="https://github.com/MLton/mlton/blob/master/mlton/backend/rssa.fun"><span class="monospaced">rssa.fun</span></a>
</p>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_type_checking">Type Checking</h2>
<div class="sectionbody">
<div class="paragraph"><p>The new type language is aimed at expressing bit-level control over
layout and associated packing of data representations.  There are
singleton types that denote constants, other atomic types for things
like integers and reals, and arbitrary sum types and sequence (tuple)
types.  The big change to the type system is that type checking is now
based on subtyping, not type equality.  So, for example, the singleton
type <span class="monospaced">0xFFFFEEBB</span> whose only inhabitant is the eponymous constant is a
subtype of the type <span class="monospaced">Word32</span>.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_details_and_notes">Details and Notes</h2>
<div class="sectionbody">
<div class="paragraph"><p>SSA is an abbreviation for Static Single Assignment.  The <a href="RSSA">RSSA</a>
<a href="IntermediateLanguage">IntermediateLanguage</a> is a variant of SSA.</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr></div>
<div id="footer">
<div id="footer-text">
</div>
<div id="footer-badges">
</div>
</div>
</body>
</html>
