You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

3 lines
7.7 KiB

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>InferIR__DecompiledExp (InferIR.InferIR__DecompiledExp)</title><link rel="stylesheet" href="../../odoc.css"/><meta charset="utf-8"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><meta name="generator" content="doc-ock-html v1.0.0-1-g1fc9bf0"/></head><body><nav id="top"><a href="../index.html">Up</a> &mdash; <span class="package">package <a href="../index.html">InferIR</a></span></nav><header><h1><span class="keyword">Module</span> <span class="module-path">InferIR__DecompiledExp</span></h1></header><p>The Smallfoot Intermediate Language: Decompiled Expressions</p><div class="spec module" id="module-F"><a href="#module-F" class="anchor"></a><div class="def module"><code><span class="keyword">module </span>F = Format</code></div><div class="doc"></div></div><div class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>t</code><code></code><code><span class="keyword"> = </span></code><table class="variant"><tr id="type-t.Darray" class="anchored"><td class="def constructor"><a href="#type-t.Darray" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">Darray</span><span class="keyword"> of </span><a href="index.html#type-t">t</a><span class="keyword"> * </span><a href="index.html#type-t">t</a></code></td></tr><tr id="type-t.Dbinop" class="anchored"><td class="def constructor"><a href="#type-t.Dbinop" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">Dbinop</span><span class="keyword"> of </span><a href="../InferIR/Binop/index.html#type-t">InferIR.Binop.t</a><span class="keyword"> * </span><a href="index.html#type-t">t</a><span class="keyword"> * </span><a href="index.html#type-t">t</a></code></td></tr><tr id="type-t.Dconst" class="anchored"><td class="def constructor"><a href="#type-t.Dconst" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">Dconst</span><span class="keyword"> of </span><a href="../InferIR/Const/index.html#type-t">InferIR.Const.t</a></code></td></tr><tr id="type-t.Dsizeof" class="anchored"><td class="def constructor"><a href="#type-t.Dsizeof" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">Dsizeof</span><span class="keyword"> of </span><a href="../InferIR/Typ/index.html#type-t">InferIR.Typ.t</a><span class="keyword"> * </span><a href="index.html#type-t">t</a> option<span class="keyword"> * </span><a href="../InferIR/Subtype/index.html#type-t">InferIR.Subtype.t</a></code></td></tr><tr id="type-t.Dderef" class="anchored"><td class="def constructor"><a href="#type-t.Dderef" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">Dderef</span><span class="keyword"> of </span><a href="index.html#type-t">t</a></code></td></tr><tr id="type-t.Dfcall" class="anchored"><td class="def constructor"><a href="#type-t.Dfcall" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">Dfcall</span><span class="keyword"> of </span><a href="index.html#type-t">t</a><span class="keyword"> * </span><a href="index.html#type-t">t</a> list<span class="keyword"> * </span><a href="../../InferBase/InferBase/Location/index.html#type-t">InferBase.Location.t</a><span class="keyword"> * </span><a href="../InferIR/CallFlags/index.html#type-t">InferIR.CallFlags.t</a></code></td></tr><tr id="type-t.Darrow" class="anchored"><td class="def constructor"><a href="#type-t.Darrow" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">Darrow</span><span class="keyword"> of </span><a href="index.html#type-t">t</a><span class="keyword"> * </span><a href="../InferIR/Typ/Fieldname/index.html#type-t">InferIR.Typ.Fieldname.t</a></code></td></tr><tr id="type-t.Ddot" class="anchored"><td class="def constructor"><a href="#type-t.Ddot" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">Ddot</span><span class="keyword"> of </span><a href="index.html#type-t">t</a><span class="keyword"> * </span><a href="../InferIR/Typ/Fieldname/index.html#type-t">InferIR.Typ.Fieldname.t</a></code></td></tr><tr id="type-t.Dpvar" class="anchored"><td class="def constructor"><a href="#type-t.Dpvar" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">Dpvar</span><span class="keyword"> of </span><a href="../InferIR/Pvar/index.html#type-t">InferIR.Pvar.t</a></code></td></tr><tr id="type-t.Dpvaraddr" class="anchored"><td class="def constructor"><a href="#type-t.Dpvaraddr" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">Dpvaraddr</span><span class="keyword"> of </span><a href="../InferIR/Pvar/index.html#type-t">InferIR.Pvar.t</a></code></td></tr><tr id="type-t.Dunop" class="anchored"><td class="def constructor"><a href="#type-t.Dunop" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">Dunop</span><span class="keyword"> of </span><a href="../InferIR/Unop/index.html#type-t">InferIR.Unop.t</a><span class="keyword"> * </span><a href="index.html#type-t">t</a></code></td></tr><tr id="type-t.Dunknown" class="anchored"><td class="def constructor"><a href="#type-t.Dunknown" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">Dunknown</span></code></td></tr><tr id="type-t.Dretcall" class="anchored"><td class="def constructor"><a href="#type-t.Dretcall" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">Dretcall</span><span class="keyword"> of </span><a href="index.html#type-t">t</a><span class="keyword"> * </span><a href="index.html#type-t">t</a> list<span class="keyword"> * </span><a href="../../InferBase/InferBase/Location/index.html#type-t">InferBase.Location.t</a><span class="keyword"> * </span><a href="../InferIR/CallFlags/index.html#type-t">InferIR.CallFlags.t</a></code></td></tr></table><code></code></div><div class="doc"><p>expression representing the result of decompilation</p></div></div><div class="spec type" id="type-vpath"><a href="#type-vpath" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>vpath</code><code><span class="keyword"> = </span><a href="index.html#type-t">t</a> option</code><code></code></div><div class="doc"><p>Value paths: identify an occurrence of a value in a symbolic heap
each expression represents a path, with Dpvar being the simplest one</p></div></div><div class="spec val" id="val-to_string"><a href="#val-to_string" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>to_string : <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> string</code></div><div class="doc"><p>convert to a string</p></div></div><div class="spec val" id="val-pp_vpath"><a href="#val-pp_vpath" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>pp_vpath : <a href="../../InferStdlib/InferStdlib/Pp/index.html#type-env">InferStdlib.Pp.env</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#module-F">F</a>.formatter <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-vpath">vpath</a> <span class="keyword">&#8209;&gt;</span> unit</code></div><div class="doc"><p>Pretty print a value path</p></div></div><div class="spec val" id="val-has_tmp_var"><a href="#val-has_tmp_var" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>has_tmp_var : <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> bool</code></div><div class="doc"><p>return true if <code class="code">dexp</code> contains a temporary pvar</p></div></div></body></html>