mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2025-10-04 10:19:23 +02:00
GP-3988 Bibliography
This commit is contained in:
parent
902c5f72b8
commit
119758c98a
3 changed files with 152 additions and 17 deletions
|
@ -1,10 +1,13 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!DOCTYPE article [
|
||||||
|
<!ENTITY acute "́"> <!-- Accent -->
|
||||||
|
]>
|
||||||
<article id="sleigh_title">
|
<article id="sleigh_title">
|
||||||
<info>
|
<info>
|
||||||
<title>SLEIGH</title>
|
<title>SLEIGH</title>
|
||||||
<subtitle>A Language for Rapid Processor Specification</subtitle>
|
<subtitle>A Language for Rapid Processor Specification</subtitle>
|
||||||
<pubdate>Originally published December 16, 2005</pubdate>
|
<pubdate>Originally published December 16, 2005</pubdate>
|
||||||
<releaseinfo>Last updated March 2, 2023</releaseinfo>
|
<releaseinfo>Last updated October 31, 2023</releaseinfo>
|
||||||
</info>
|
</info>
|
||||||
<simplesect id="sleigh_history">
|
<simplesect id="sleigh_history">
|
||||||
<info>
|
<info>
|
||||||
|
@ -17,7 +20,8 @@
|
||||||
several redesign iterations, but it can still trace its heritage
|
several redesign iterations, but it can still trace its heritage
|
||||||
from the language SLED, from whom its name is derived. SLED, the
|
from the language SLED, from whom its name is derived. SLED, the
|
||||||
“Specification Language for Encoding and Decoding”, was defined by
|
“Specification Language for Encoding and Decoding”, was defined by
|
||||||
Norman Ramsey and Mary F. Fernandez as a concise way to define the
|
Norman Ramsey and Mary F. Ferna´ndez in <xref linkend="Ramsey97"/>
|
||||||
|
as a concise way to define the
|
||||||
translation, in both directions, between machine instructions and
|
translation, in both directions, between machine instructions and
|
||||||
their corresponding assembly statements. This facilitated the
|
their corresponding assembly statements. This facilitated the
|
||||||
development of architecture independent disassemblers and
|
development of architecture independent disassemblers and
|
||||||
|
@ -27,13 +31,97 @@
|
||||||
The direct predecessor of SLEIGH was an implementation of SLED for
|
The direct predecessor of SLEIGH was an implementation of SLED for
|
||||||
GHIDRA, which concentrated on its reverse-engineering
|
GHIDRA, which concentrated on its reverse-engineering
|
||||||
capabilities. The main addition of SLEIGH is the ability to provide
|
capabilities. The main addition of SLEIGH is the ability to provide
|
||||||
semantic descriptions of instructions for data-flow and
|
semantic descriptions of instructions for data-flow and decompilation
|
||||||
decompilation analysis. This piece of SLEIGH was originally a
|
analysis. This piece of SLEIGH borrowed ideas from the Semantic Syntax Language (SSL),
|
||||||
separate language, the Semantic Syntax Language (SSL), very loosely
|
a specification language developed in <xref linkend="Cifuentes00"/> for the
|
||||||
based on concepts and a language of the same name developed by
|
University of Queensland Binary Translator (UQBT) project by
|
||||||
Cristina Cifuentes, Mike Van Emmerik and Norman Ramsey, for the
|
Cristina Cifuentes, Mike Van Emmerik and Norman Ramsey.
|
||||||
University of Queensland Binary Translator (UQBT) project.
|
|
||||||
</para>
|
</para>
|
||||||
|
<para>
|
||||||
|
Dr. Cristina Cifuentes' work, in general, was an important starting point for the GHIDRA decompiler.
|
||||||
|
Its design follows the basic structure layed out in her 1994 thesis "Reverse Compilation Techniques":
|
||||||
|
<informalexample>
|
||||||
|
<itemizedlist mark='bullet' spacing='compact'>
|
||||||
|
<listitem>
|
||||||
|
Disassembly of machine instructions and translation to an intermediate representation (IR).
|
||||||
|
</listitem>
|
||||||
|
<listitem>
|
||||||
|
Transformation toward a high-level representation via
|
||||||
|
<itemizedlist mark='circle' spacing='compact'>
|
||||||
|
<listitem>
|
||||||
|
Data-flow analysis, including dead code analysis and copy propagation.
|
||||||
|
</listitem>
|
||||||
|
<listitem>
|
||||||
|
Control-flow analysis using graph reducibility to achieve a structured representation.
|
||||||
|
</listitem>
|
||||||
|
</itemizedlist>
|
||||||
|
</listitem>
|
||||||
|
<listitem>
|
||||||
|
Back-end code generation from the transformed representation.
|
||||||
|
</listitem>
|
||||||
|
</itemizedlist>
|
||||||
|
</informalexample>
|
||||||
|
In keeping with her philosophy of decompilation, SLEIGH is GHIDRA's implementation of the first step.
|
||||||
|
It efficiently couples disassembly of machine instructions with the initial translation into an IR.
|
||||||
|
</para>
|
||||||
|
<bibliolist>
|
||||||
|
<title>References</title>
|
||||||
|
<biblioentry id="Cifuentes94">
|
||||||
|
<authorgroup>
|
||||||
|
<author><personname>
|
||||||
|
<firstname>Cristina</firstname><surname>Cifuentes</surname>
|
||||||
|
</personname></author>
|
||||||
|
</authorgroup>
|
||||||
|
<title>
|
||||||
|
Reverse Compilation Techniques
|
||||||
|
</title>
|
||||||
|
<pubdate>1994</pubdate>
|
||||||
|
<publisher>
|
||||||
|
<publishername>Ph.D. Dissertation. Queensland University of Technology</publishername>
|
||||||
|
<address>
|
||||||
|
<city>Brisbane City</city>,
|
||||||
|
<state>QLD</state>,
|
||||||
|
<country>Australia</country>
|
||||||
|
</address>
|
||||||
|
</publisher>
|
||||||
|
</biblioentry>
|
||||||
|
<biblioentry id="Cifuentes00">
|
||||||
|
<biblioset relation='article'>
|
||||||
|
<authorgroup>
|
||||||
|
<author><personname>
|
||||||
|
<firstname>Cristina</firstname><surname>Cifuentes</surname>
|
||||||
|
</personname></author>
|
||||||
|
<author><personname>
|
||||||
|
<firstname>Mike</firstname><surname>Van Emmerik</surname>
|
||||||
|
</personname></author>
|
||||||
|
</authorgroup>
|
||||||
|
<title>UQBT: Adaptable Binary Translation at Low Cost</title>
|
||||||
|
</biblioset>
|
||||||
|
<biblioset relation='journal'>
|
||||||
|
<title>Computer</title>
|
||||||
|
<date>(Mar. 2000)</date>
|
||||||
|
<pagenums>pp. 60-66</pagenums>
|
||||||
|
</biblioset>
|
||||||
|
</biblioentry>
|
||||||
|
<biblioentry id="Ramsey97">
|
||||||
|
<biblioset relation='article'>
|
||||||
|
<authorgroup>
|
||||||
|
<author><personname>
|
||||||
|
<firstname>Norman</firstname><surname>Ramsey</surname>
|
||||||
|
</personname></author>
|
||||||
|
<author><personname>
|
||||||
|
<firstname>Mary F.</firstname><surname>Ferna´ndez</surname>
|
||||||
|
</personname></author>
|
||||||
|
</authorgroup>
|
||||||
|
<title>Specifying Representations of Machine Instructions</title>
|
||||||
|
</biblioset>
|
||||||
|
<biblioset relation='journal'>
|
||||||
|
<title>ACM Trans. Programming Languages and Systems</title>
|
||||||
|
<date>(May 1997)</date>
|
||||||
|
<pagenums>pp. 492-524</pagenums>
|
||||||
|
</biblioset>
|
||||||
|
</biblioentry>
|
||||||
|
</bibliolist>
|
||||||
</simplesect>
|
</simplesect>
|
||||||
|
|
||||||
<simplesect id="sleigh_overview">
|
<simplesect id="sleigh_overview">
|
||||||
|
|
|
@ -32,4 +32,6 @@ task before
|
||||||
|
|
||||||
<xsl:param name="section.autolabel" select="1"/> <!-- Automatically number sections -->
|
<xsl:param name="section.autolabel" select="1"/> <!-- Automatically number sections -->
|
||||||
|
|
||||||
|
<xsl:param name="bibliography.numbered" select="1"/> <!-- Number bibliography entries -->
|
||||||
|
|
||||||
</xsl:stylesheet>
|
</xsl:stylesheet>
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
<title>SLEIGH</title>
|
<title>SLEIGH</title>
|
||||||
<link rel="stylesheet" type="text/css" href="DefaultStyle.css">
|
<link rel="stylesheet" type="text/css" href="DefaultStyle.css">
|
||||||
<link rel="stylesheet" type="text/css" href="languages.css">
|
<link rel="stylesheet" type="text/css" href="languages.css">
|
||||||
<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot">
|
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
|
||||||
<link rel="home" href="sleigh.html" title="SLEIGH">
|
<link rel="home" href="sleigh.html" title="SLEIGH">
|
||||||
<link rel="next" href="sleigh_layout.html" title="2. Basic Specification Layout">
|
<link rel="next" href="sleigh_layout.html" title="2. Basic Specification Layout">
|
||||||
</head>
|
</head>
|
||||||
|
@ -27,7 +27,7 @@
|
||||||
<div><h1 class="title">
|
<div><h1 class="title">
|
||||||
<a name="sleigh_title"></a>SLEIGH</h1></div>
|
<a name="sleigh_title"></a>SLEIGH</h1></div>
|
||||||
<div><h3 class="subtitle"><i>A Language for Rapid Processor Specification</i></h3></div>
|
<div><h3 class="subtitle"><i>A Language for Rapid Processor Specification</i></h3></div>
|
||||||
<div><p class="releaseinfo">Last updated March 2, 2023</p></div>
|
<div><p class="releaseinfo">Last updated October 31, 2023</p></div>
|
||||||
<div><p class="pubdate">Originally published December 16, 2005</p></div>
|
<div><p class="pubdate">Originally published December 16, 2005</p></div>
|
||||||
</div>
|
</div>
|
||||||
<hr>
|
<hr>
|
||||||
|
@ -109,7 +109,8 @@
|
||||||
several redesign iterations, but it can still trace its heritage
|
several redesign iterations, but it can still trace its heritage
|
||||||
from the language SLED, from whom its name is derived. SLED, the
|
from the language SLED, from whom its name is derived. SLED, the
|
||||||
“Specification Language for Encoding and Decoding”, was defined by
|
“Specification Language for Encoding and Decoding”, was defined by
|
||||||
Norman Ramsey and Mary F. Fernandez as a concise way to define the
|
Norman Ramsey and Mary F. Fernández in <a class="xref" href="sleigh.html#Ramsey97">[3]</a>
|
||||||
|
as a concise way to define the
|
||||||
translation, in both directions, between machine instructions and
|
translation, in both directions, between machine instructions and
|
||||||
their corresponding assembly statements. This facilitated the
|
their corresponding assembly statements. This facilitated the
|
||||||
development of architecture independent disassemblers and
|
development of architecture independent disassemblers and
|
||||||
|
@ -119,13 +120,57 @@
|
||||||
The direct predecessor of SLEIGH was an implementation of SLED for
|
The direct predecessor of SLEIGH was an implementation of SLED for
|
||||||
GHIDRA, which concentrated on its reverse-engineering
|
GHIDRA, which concentrated on its reverse-engineering
|
||||||
capabilities. The main addition of SLEIGH is the ability to provide
|
capabilities. The main addition of SLEIGH is the ability to provide
|
||||||
semantic descriptions of instructions for data-flow and
|
semantic descriptions of instructions for data-flow and decompilation
|
||||||
decompilation analysis. This piece of SLEIGH was originally a
|
analysis. This piece of SLEIGH borrowed ideas from the Semantic Syntax Language (SSL),
|
||||||
separate language, the Semantic Syntax Language (SSL), very loosely
|
a specification language developed in <a class="xref" href="sleigh.html#Cifuentes00">[2]</a> for the
|
||||||
based on concepts and a language of the same name developed by
|
University of Queensland Binary Translator (UQBT) project by
|
||||||
Cristina Cifuentes, Mike Van Emmerik and Norman Ramsey, for the
|
Cristina Cifuentes, Mike Van Emmerik and Norman Ramsey.
|
||||||
University of Queensland Binary Translator (UQBT) project.
|
|
||||||
</p>
|
</p>
|
||||||
|
<p>
|
||||||
|
Dr. Cristina Cifuentes' work, in general, was an important starting point for the GHIDRA decompiler.
|
||||||
|
Its design follows the basic structure layed out in her 1994 thesis "Reverse Compilation Techniques":
|
||||||
|
</p>
|
||||||
|
<div class="informalexample"><div class="itemizedlist"><ul class="itemizedlist compact" style="list-style-type: bullet; ">
|
||||||
|
<li class="listitem" style="list-style-type: disc">
|
||||||
|
Disassembly of machine instructions and translation to an intermediate representation (IR).
|
||||||
|
</li>
|
||||||
|
<li class="listitem" style="list-style-type: disc">
|
||||||
|
Transformation toward a high-level representation via
|
||||||
|
<div class="itemizedlist"><ul class="itemizedlist compact" style="list-style-type: circle; ">
|
||||||
|
<li class="listitem" style="list-style-type: circle">
|
||||||
|
Data-flow analysis, including dead code analysis and copy propagation.
|
||||||
|
</li>
|
||||||
|
<li class="listitem" style="list-style-type: circle">
|
||||||
|
Control-flow analysis using graph reducibility to achieve a structured representation.
|
||||||
|
</li>
|
||||||
|
</ul></div>
|
||||||
|
</li>
|
||||||
|
<li class="listitem" style="list-style-type: disc">
|
||||||
|
Back-end code generation from the transformed representation.
|
||||||
|
</li>
|
||||||
|
</ul></div></div>
|
||||||
|
<p>
|
||||||
|
In keeping with her philosophy of decompilation, SLEIGH is GHIDRA's implementation of the first step.
|
||||||
|
It efficiently couples disassembly of machine instructions with the initial translation into an IR.
|
||||||
|
</p>
|
||||||
|
<div class="bibliolist">
|
||||||
|
<p class="title"><b>References</b></p>
|
||||||
|
<div class="biblioentry">
|
||||||
|
<a name="Cifuentes94"></a><p>[1] <span class="authorgroup"><span class="firstname">Cristina</span> <span class="surname">Cifuentes</span>. </span><span class="title"><i>
|
||||||
|
Reverse Compilation Techniques
|
||||||
|
</i>. </span><span class="pubdate">1994. </span><span class="publisher"><span class="publishername">Ph.D. Dissertation. Queensland University of Technology. </span><span class="address">
|
||||||
|
<span class="city">Brisbane City</span>,
|
||||||
|
<span class="state">QLD</span>,
|
||||||
|
<span class="country">Australia</span>
|
||||||
|
. </span></span></p>
|
||||||
|
</div>
|
||||||
|
<div class="biblioentry">
|
||||||
|
<a name="Cifuentes00"></a><p>[2] <span class="biblioset"><span class="authorgroup"><span class="firstname">Cristina</span> <span class="surname">Cifuentes</span> and <span class="firstname">Mike</span> <span class="surname">Van Emmerik</span>. </span>“UQBT: Adaptable Binary Translation at Low Cost”. </span><span class="biblioset"><i>Computer</i>. <span class="date">(Mar. 2000). </span><span class="pagenums">pp. 60-66. </span></span></p>
|
||||||
|
</div>
|
||||||
|
<div class="biblioentry">
|
||||||
|
<a name="Ramsey97"></a><p>[3] <span class="biblioset"><span class="authorgroup"><span class="firstname">Norman</span> <span class="surname">Ramsey</span> and <span class="firstname">Mary F.</span> <span class="surname">Fernández</span>. </span>“Specifying Representations of Machine Instructions”. </span><span class="biblioset"><i>ACM Trans. Programming Languages and Systems</i>. <span class="date">(May 1997). </span><span class="pagenums">pp. 492-524. </span></span></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="simplesect">
|
<div class="simplesect">
|
||||||
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
|
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue