mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2025-10-05 10:49:34 +02:00
spelling
This commit is contained in:
parent
74103976a1
commit
0c65e251aa
11 changed files with 88 additions and 292 deletions
|
@ -93,7 +93,8 @@ task buildDecompilerHelpHtml(type: Exec) {
|
||||||
echo '** Building html files **'
|
echo '** Building html files **'
|
||||||
xsltproc --output $buildDir/decomp_noscaling.xml --stringparam profile.condition "noscaling" /usr/share/sgml/docbook/xsl-stylesheets/profiling/profile.xsl decompileplugin.xml 2>&1
|
xsltproc --output $buildDir/decomp_noscaling.xml --stringparam profile.condition "noscaling" /usr/share/sgml/docbook/xsl-stylesheets/profiling/profile.xsl decompileplugin.xml 2>&1
|
||||||
xsltproc --stringparam base.dir ${installHelpPoint}/topics/DecompilePlugin/ --stringparam root.filename Decompiler decompileplugin_html.xsl $buildDir/decomp_noscaling.xml 2>&1
|
xsltproc --stringparam base.dir ${installHelpPoint}/topics/DecompilePlugin/ --stringparam root.filename Decompiler decompileplugin_html.xsl $buildDir/decomp_noscaling.xml 2>&1
|
||||||
sed -i -e '/Frontpage.css/ { p; s/Frontpage.css/languages.css/; }' ${installHelpPoint}/topics/DecompilePlugin/*.html
|
rm ${installHelpPoint}/topics/DecompilePlugin/Decompiler.html
|
||||||
|
sed -i -e '/Frontpage.css/ { p; s/Frontpage.css/languages.css/; }' ${installHelpPoint}/topics/DecompilePlugin/*.html 2>&1
|
||||||
|
|
||||||
echo '** Done. **'
|
echo '** Done. **'
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -976,7 +976,7 @@
|
||||||
</itemizedlist>
|
</itemizedlist>
|
||||||
</informalexample>
|
</informalexample>
|
||||||
The scope extends via control-flow to each p-code operation that <emphasis>reads</emphasis> the
|
The scope extends via control-flow to each p-code operation that <emphasis>reads</emphasis> the
|
||||||
specific varnode as an operand. The value of the varnode between the definining p-code operation
|
specific varnode as an operand. The value of the varnode between the defining p-code operation
|
||||||
and the reading operations does not change. The scope of a varnode can be thought of as a set
|
and the reading operations does not change. The scope of a varnode can be thought of as a set
|
||||||
of addresses within the function's body connected by control-flow. The address of the defining
|
of addresses within the function's body connected by control-flow. The address of the defining
|
||||||
p-code operation is referred to as the varnode's <emphasis role="bold">first use point</emphasis>
|
p-code operation is referred to as the varnode's <emphasis role="bold">first use point</emphasis>
|
||||||
|
@ -1107,7 +1107,7 @@
|
||||||
<sect3 id="ConceptPrototypeKilledByCall">
|
<sect3 id="ConceptPrototypeKilledByCall">
|
||||||
<title>Killed by Call</title>
|
<title>Killed by Call</title>
|
||||||
<para>
|
<para>
|
||||||
In constrast to <emphasis>unaffected</emphasis> memory locations, a prototype model may specify
|
In contrast to <emphasis>unaffected</emphasis> memory locations, a prototype model may specify
|
||||||
<emphasis role="bold">killed by call</emphasis> locations that are guaranteed <emphasis>not</emphasis>
|
<emphasis role="bold">killed by call</emphasis> locations that are guaranteed <emphasis>not</emphasis>
|
||||||
to be used to hold a value across the function.
|
to be used to hold a value across the function.
|
||||||
</para>
|
</para>
|
||||||
|
@ -1150,7 +1150,7 @@
|
||||||
A <emphasis role="bold">function body</emphasis> is the set of addresses reached by control-flow
|
A <emphasis role="bold">function body</emphasis> is the set of addresses reached by control-flow
|
||||||
analysis (and the machine instructions at those addresses).
|
analysis (and the machine instructions at those addresses).
|
||||||
</para>
|
</para>
|
||||||
<sect2 id="ConceptEntryPoint">
|
<sect2 id="AnnoteEntryPoint">
|
||||||
<title>Entry Point</title>
|
<title>Entry Point</title>
|
||||||
<para>
|
<para>
|
||||||
The <emphasis>entry point</emphasis> address for a function plays a pivotal role for
|
The <emphasis>entry point</emphasis> address for a function plays a pivotal role for
|
||||||
|
@ -1171,7 +1171,7 @@
|
||||||
(See <link xlink:href="help/topics/FunctionPlugin/Functions.htm#Create_Function">Create Function</link>)
|
(See <link xlink:href="help/topics/FunctionPlugin/Functions.htm#Create_Function">Create Function</link>)
|
||||||
</para>
|
</para>
|
||||||
</sect2>
|
</sect2>
|
||||||
<sect2 id="ConceptFunctionBody">
|
<sect2 id="AnnoteFormalFunctionBody">
|
||||||
<title>Formal Function Body</title>
|
<title>Formal Function Body</title>
|
||||||
<para>
|
<para>
|
||||||
When a function is created, Ghidra stores its function body as a set of addresses in the
|
When a function is created, Ghidra stores its function body as a set of addresses in the
|
||||||
|
@ -1181,17 +1181,17 @@
|
||||||
in particular use the formal function body to know which function to decompile in response
|
in particular use the formal function body to know which function to decompile in response
|
||||||
to a navigation event to an arbitrary address.
|
to a navigation event to an arbitrary address.
|
||||||
</para>
|
</para>
|
||||||
<note>
|
<warning>
|
||||||
The decompiler does <emphasis>not</emphasis> use the formal function body when it computes
|
The decompiler does <emphasis>not</emphasis> use the formal function body when it computes
|
||||||
control-flow; it recomputes its own idea of the function body starting from the entry point
|
control-flow; it recomputes its own idea of the function body starting from the entry point
|
||||||
it is handed. If the formal function body was created manually, using a selection for instance,
|
it is handed. If the formal function body was created manually, using a selection for instance,
|
||||||
or in other extreme circumstances, the decompiler's view of the function body may not match
|
or in other extreme circumstances, the decompiler's view of the function body may not match
|
||||||
the formal view. This can lead to confusing behavior, where clicking in a decompiler window
|
the formal view. This can lead to confusing behavior, where clicking in a decompiler window
|
||||||
may unexpectedly navigate the window away from the function.
|
may unexpectedly navigate the window away from the function.
|
||||||
</note>
|
</warning>
|
||||||
</sect2>
|
</sect2>
|
||||||
|
|
||||||
<sect2 id="ConceptFlowOverride">
|
<sect2 id="AnnoteFlowOverride">
|
||||||
<title>Flow Overrides</title>
|
<title>Flow Overrides</title>
|
||||||
<para>
|
<para>
|
||||||
Control-flow behavior for machine instructions is generally determined by the underlying
|
Control-flow behavior for machine instructions is generally determined by the underlying
|
||||||
|
@ -1339,12 +1339,12 @@
|
||||||
types can be configured to display in decompiler output, by changing the
|
types can be configured to display in decompiler output, by changing the
|
||||||
decompiler Display options (See <xref linkend="CommentOptions"/>).
|
decompiler Display options (See <xref linkend="CommentOptions"/>).
|
||||||
</para>
|
</para>
|
||||||
<note>
|
<warning>
|
||||||
Unlike the Listing window, the decompiler does not alter how a comment is
|
Unlike the Listing window, the decompiler does not alter how a comment is
|
||||||
displayed based on its type.
|
displayed based on its type.
|
||||||
All enabled types of comment are displayed in the same way, on
|
All enabled types of comment are displayed in the same way, on
|
||||||
a separate line before the line of code associated with the address.
|
a separate line before the line of code associated with the address.
|
||||||
</note>
|
</warning>
|
||||||
</sect2>
|
</sect2>
|
||||||
|
|
||||||
<sect2 id="CommentUnreachable">
|
<sect2 id="CommentUnreachable">
|
||||||
|
@ -1514,7 +1514,7 @@
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
Local variables,
|
Local variables,
|
||||||
in constrast, do not generally exist across the whole function, but come into scope
|
in contrast, do not generally exist across the whole function, but come into scope
|
||||||
at the instruction that first writes to them, and then exist only up to the last
|
at the instruction that first writes to them, and then exist only up to the last
|
||||||
instruction that reads them. The memory location storing a local variable
|
instruction that reads them. The memory location storing a local variable
|
||||||
at one point of the function may be reused for different variables at other points.
|
at one point of the function may be reused for different variables at other points.
|
||||||
|
@ -1607,7 +1607,7 @@
|
||||||
<sect4 id="TypeChar">
|
<sect4 id="TypeChar">
|
||||||
<title>Character</title>
|
<title>Character</title>
|
||||||
<para>
|
<para>
|
||||||
ASCII or unicode encoded character data-types are supported for sizes of 1, 2, and 4. The size affectively
|
ASCII or Unicode encoded character data-types are supported for sizes of 1, 2, and 4. The size effectively
|
||||||
chooses between the UTF8, UTF16, and UTF32 character encodings respectively. The standard
|
chooses between the UTF8, UTF16, and UTF32 character encodings respectively. The standard
|
||||||
C data-type names <emphasis role="bold">char</emphasis> and <emphasis role="bold">wchar_t</emphasis> are
|
C data-type names <emphasis role="bold">char</emphasis> and <emphasis role="bold">wchar_t</emphasis> are
|
||||||
mapped to one of these sizes based on the
|
mapped to one of these sizes based on the
|
||||||
|
@ -1637,7 +1637,7 @@
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
Strings should be fully rendered in decompiler output,
|
Strings should be fully rendered in decompiler output,
|
||||||
with non-printable characters escaped using either traditional sequences like '\r', '\n' or using unicode
|
with non-printable characters escaped using either traditional sequences like '\r', '\n' or using Unicode
|
||||||
escape sequences like '\xFF'.
|
escape sequences like '\xFF'.
|
||||||
</para>
|
</para>
|
||||||
</sect4>
|
</sect4>
|
||||||
|
@ -1689,7 +1689,7 @@
|
||||||
single value in the enumeration definition, the decompiler attempts to build a matching
|
single value in the enumeration definition, the decompiler attempts to build a matching
|
||||||
value by <emphasis>or</emphasis>-ing together multiple labels.
|
value by <emphasis>or</emphasis>-ing together multiple labels.
|
||||||
The decompiler can be made to break out constants representing packed <emphasis>flags</emphasis>,
|
The decompiler can be made to break out constants representing packed <emphasis>flags</emphasis>,
|
||||||
for instance, by labeling individal bit values within an enumeration.
|
for instance, by labeling individual bit values within an enumeration.
|
||||||
</para>
|
</para>
|
||||||
</sect4>
|
</sect4>
|
||||||
<sect4 id="TypeFunction">
|
<sect4 id="TypeFunction">
|
||||||
|
@ -1760,12 +1760,12 @@
|
||||||
but the variable representing the storage location being annotated is guaranteed to have
|
but the variable representing the storage location being annotated is guaranteed to have
|
||||||
the given name and that data-type; it will not be overridden.
|
the given name and that data-type; it will not be overridden.
|
||||||
</para>
|
</para>
|
||||||
<note>
|
<warning>
|
||||||
Users should be aware that variable annotations are forcing on the decompiler and may directly
|
Users should be aware that variable annotations are forcing on the decompiler and may directly
|
||||||
override aspects of its analysis. Because of this, variable annotations are the most powerful way
|
override aspects of its analysis. Because of this, variable annotations are the most powerful way
|
||||||
for the user to affect decompiler output, but setting an incomplete (or incorrect) data-type as
|
for the user to affect decompiler output, but setting an incomplete (or incorrect) data-type as
|
||||||
part of an annotation may produce poorer decompiler output.
|
part of an annotation may produce poorer decompiler output.
|
||||||
</note>
|
</warning>
|
||||||
<para>
|
<para>
|
||||||
The major exception to forcing annotations is if the data-type in the annotation is <emphasis>undefined</emphasis>.
|
The major exception to forcing annotations is if the data-type in the annotation is <emphasis>undefined</emphasis>.
|
||||||
Ghidra reserves the following names to represent formally undefined data-types:
|
Ghidra reserves the following names to represent formally undefined data-types:
|
||||||
|
@ -1992,7 +1992,7 @@
|
||||||
<term><emphasis role="bold">Variable Arguments</emphasis></term>
|
<term><emphasis role="bold">Variable Arguments</emphasis></term>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
Functions have a boolean property called <emphasis role="bold">variable argments</emphasis>, which can be turned on
|
Functions have a boolean property called <emphasis role="bold">variable arguments</emphasis>, which can be turned on
|
||||||
if the function is capable of being passed a variable number of inputs. This property informs the decompiler that
|
if the function is capable of being passed a variable number of inputs. This property informs the decompiler that
|
||||||
the function may take additional parameters beyond any with an explicit variable annotation.
|
the function may take additional parameters beyond any with an explicit variable annotation.
|
||||||
This affects decompilation of any function which calls the <emphasis>variable arguments</emphasis> function, allowing
|
This affects decompilation of any function which calls the <emphasis>variable arguments</emphasis> function, allowing
|
||||||
|
@ -2056,11 +2056,11 @@
|
||||||
See the complete discussion in <xref linkend="AnnoteForcing"/>.
|
See the complete discussion in <xref linkend="AnnoteForcing"/>.
|
||||||
But keep in mind:
|
But keep in mind:
|
||||||
</para>
|
</para>
|
||||||
<note>
|
<warning>
|
||||||
The input parameters and return value are all forced on the decompiler as a unit based on the
|
The input parameters and return value are all forced on the decompiler as a unit based on the
|
||||||
<emphasis>Signature Source-Type</emphasis>. They are all forced if the Source-Type is set to anything
|
<emphasis>Signature Source-Type</emphasis>. They are all forced if the Source-Type is set to anything
|
||||||
other than <emphasis>DEFAULT</emphasis>; otherwise none of them are forced.
|
other than <emphasis>DEFAULT</emphasis>; otherwise none of them are forced.
|
||||||
</note>
|
</warning>
|
||||||
<para>
|
<para>
|
||||||
If the function prototype's annotations are not forced, the decompiler will attempt to discover the parameters
|
If the function prototype's annotations are not forced, the decompiler will attempt to discover the parameters
|
||||||
and return value using the calling convention. The prototype model underlying the calling convention
|
and return value using the calling convention. The prototype model underlying the calling convention
|
||||||
|
@ -2507,7 +2507,7 @@
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
Assign the color to any characters emitted by the decompiler that do not fall into one of token types
|
Assign the color to any characters emitted by the decompiler that do not fall into one of token types
|
||||||
listed above. This includes delimiter characters like commas and parantheses as well as various <emphasis>operator</emphasis>
|
listed above. This includes delimiter characters like commas and parentheses as well as various <emphasis>operator</emphasis>
|
||||||
characters.
|
characters.
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
|
@ -2644,7 +2644,7 @@
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
Toggle whether decompiler generated <emphasis>WARNING</emphasis> comments are displayed as part
|
Toggle whether decompiler generated <emphasis>WARNING</emphasis> comments are displayed as part
|
||||||
of the output. The decompiler generates these comments, independent of those layed down by users, to
|
of the output. The decompiler generates these comments, independent of those laid down by users, to
|
||||||
indicate unusual conditions or possible errors (See <xref linkend="CommentWarnings"/>).
|
indicate unusual conditions or possible errors (See <xref linkend="CommentWarnings"/>).
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
|
@ -2866,13 +2866,13 @@
|
||||||
<para>
|
<para>
|
||||||
<emphasis>Comment</emphasis> tokens map to the machine address associated with the comment.
|
<emphasis>Comment</emphasis> tokens map to the machine address associated with the comment.
|
||||||
</para>
|
</para>
|
||||||
<note>
|
<warning>
|
||||||
In general, the map between machine instructions and tokens is not one to one because the decompiler
|
In general, the map between machine instructions and tokens is not one to one because the decompiler
|
||||||
transforms its underlying representation of the function.
|
transforms its underlying representation of the function.
|
||||||
An instruction may no longer have any operator that corresponds to it in the decompiled result.
|
An instruction may no longer have any operator that corresponds to it in the decompiled result.
|
||||||
Tokens may be transformed from the natural operation of the machine instruction they are associated
|
Tokens may be transformed from the natural operation of the machine instruction they are associated
|
||||||
with or may represent the effect of multiple instructions.
|
with or may represent the effect of multiple instructions.
|
||||||
</note>
|
</warning>
|
||||||
</sect2>
|
</sect2>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
@ -2950,13 +2950,13 @@
|
||||||
Triggers a re-decompilation of the current function displayed in the window.
|
Triggers a re-decompilation of the current function displayed in the window.
|
||||||
Any cached results are discarded, and a full decompile is performed.
|
Any cached results are discarded, and a full decompile is performed.
|
||||||
</para>
|
</para>
|
||||||
<note>
|
<tip>
|
||||||
This action is <emphasis role="bold">not</emphasis> necessary for normal reverse
|
This action is <emphasis role="bold">not</emphasis> necessary for normal reverse
|
||||||
engineering tasks. Re-decompilation is <emphasis>automatically</emphasis> triggered for all
|
engineering tasks. Re-decompilation is <emphasis>automatically</emphasis> triggered for all
|
||||||
decompiler windows by any change to the Program, so the most up-to-date decompilation is
|
decompiler windows by any change to the Program, so the most up-to-date decompilation is
|
||||||
always available to the user without this action. This action is a primarily a debugging
|
always available to the user without this action. This action is a primarily a debugging
|
||||||
aid for plug-in developers.
|
aid for plug-in developers.
|
||||||
</note>
|
</tip>
|
||||||
</sect2>
|
</sect2>
|
||||||
|
|
||||||
<sect2 id="ToolBarCopy">
|
<sect2 id="ToolBarCopy">
|
||||||
|
@ -2996,9 +2996,9 @@
|
||||||
Generate a control-flow graph based upon the results in the active Decompiler Window,
|
Generate a control-flow graph based upon the results in the active Decompiler Window,
|
||||||
and render it using the current Graph Service.
|
and render it using the current Graph Service.
|
||||||
</para>
|
</para>
|
||||||
<note>
|
<warning>
|
||||||
If no Graph Service is available then this action will no be present.
|
If no Graph Service is available then this action will no be present.
|
||||||
</note>
|
</warning>
|
||||||
</sect2>
|
</sect2>
|
||||||
|
|
||||||
</section>
|
</section>
|
||||||
|
@ -3586,7 +3586,7 @@
|
||||||
A new or child namespace can
|
A new or child namespace can
|
||||||
be specified by prepending the base name with the namespace using the C++ '::'
|
be specified by prepending the base name with the namespace using the C++ '::'
|
||||||
separator characters. Any namespace path entered this way is considered relative
|
separator characters. Any namespace path entered this way is considered relative
|
||||||
to the namespace set in the drop-down meu, so the <emphasis role="bold">Global</emphasis>
|
to the namespace set in the drop-down menu, so the <emphasis role="bold">Global</emphasis>
|
||||||
namespace may need to be selected if the user wants to specify an absolute path. If
|
namespace may need to be selected if the user wants to specify an absolute path. If
|
||||||
any path element of the namespace does not exist, it is created.
|
any path element of the namespace does not exist, it is created.
|
||||||
</para>
|
</para>
|
||||||
|
@ -3642,7 +3642,7 @@
|
||||||
A new or child namespace can
|
A new or child namespace can
|
||||||
be specified by prepending the base name with the namespace using the C++ '::'
|
be specified by prepending the base name with the namespace using the C++ '::'
|
||||||
separator characters. Any namespace path entered this way is considered relative
|
separator characters. Any namespace path entered this way is considered relative
|
||||||
to the namespace set in the drop-down meu, so the <emphasis role="bold">Global</emphasis>
|
to the namespace set in the drop-down menu, so the <emphasis role="bold">Global</emphasis>
|
||||||
namespace may need to be selected if the user wants to specify an absolute path. If
|
namespace may need to be selected if the user wants to specify an absolute path. If
|
||||||
any path element of the namespace does not exist, it is created.
|
any path element of the namespace does not exist, it is created.
|
||||||
</para>
|
</para>
|
||||||
|
@ -3741,7 +3741,7 @@
|
||||||
the return value (named <code><RETURN></code>) did not exist previously, one is created.
|
the return value (named <code><RETURN></code>) did not exist previously, one is created.
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
As input parameter annotations and the return value annotation must be commited as a whole
|
As input parameter annotations and the return value annotation must be committed as a whole
|
||||||
(see the discussion of function prototype's in <xref linkend="AnnoteForcing"/>), if
|
(see the discussion of function prototype's in <xref linkend="AnnoteForcing"/>), if
|
||||||
no prototype existed previously, this action also causes variable annotations for all
|
no prototype existed previously, this action also causes variable annotations for all
|
||||||
input parameters to be created as well. In this situation, the action is equivalent to
|
input parameters to be created as well. In this situation, the action is equivalent to
|
||||||
|
|
|
@ -40,6 +40,8 @@
|
||||||
</xsl:element>
|
</xsl:element>
|
||||||
</xsl:template>
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:param name="suppress.navigation" select="1"/> <!-- Turn off header/footer navigation links -->
|
||||||
|
|
||||||
<xsl:param name="use.id.as.filename" select="1"/> <!-- Split up into files based on id attribute -->
|
<xsl:param name="use.id.as.filename" select="1"/> <!-- Split up into files based on id attribute -->
|
||||||
|
|
||||||
<xsl:param name="html.stylesheet" select="'../../shared/Frontpage.css'"/> <!-- Use our custom cascading style sheet -->
|
<xsl:param name="html.stylesheet" select="'../../shared/Frontpage.css'"/> <!-- Use our custom cascading style sheet -->
|
||||||
|
|
|
@ -68,6 +68,7 @@
|
||||||
text="Program Annotations Affecting the Decompiler"
|
text="Program Annotations Affecting the Decompiler"
|
||||||
target="help/topics/DecompilePlugin/DecompilerAnnotations.html">
|
target="help/topics/DecompilePlugin/DecompilerAnnotations.html">
|
||||||
<tocdef id="AnnoteFunctionBody" sortgroup="a" text="Machine Instructions" target="help/topics/DecompilePlugin/DecompilerAnnotations.html#AnnoteFunctionBody"/>
|
<tocdef id="AnnoteFunctionBody" sortgroup="a" text="Machine Instructions" target="help/topics/DecompilePlugin/DecompilerAnnotations.html#AnnoteFunctionBody"/>
|
||||||
|
<!-- Space added to text="Comments" attribute below to distinguish it from the CommentsPlugin section of the same name -->
|
||||||
<tocdef id="AnnoteComments" sortgroup="b" text="Comments " target="help/topics/DecompilePlugin/DecompilerAnnotations.html#AnnoteComments"/>
|
<tocdef id="AnnoteComments" sortgroup="b" text="Comments " target="help/topics/DecompilePlugin/DecompilerAnnotations.html#AnnoteComments"/>
|
||||||
<tocdef id="AnnoteVariables" sortgroup="c" text="Variable Annotations" target="help/topics/DecompilePlugin/DecompilerAnnotations.html#AnnoteVariables"/>
|
<tocdef id="AnnoteVariables" sortgroup="c" text="Variable Annotations" target="help/topics/DecompilePlugin/DecompilerAnnotations.html#AnnoteVariables"/>
|
||||||
<tocdef id="AnnotePrototype" sortgroup="d" text="Function Prototypes" target="help/topics/DecompilePlugin/DecompilerAnnotations.html#AnnotePrototype"/>
|
<tocdef id="AnnotePrototype" sortgroup="d" text="Function Prototypes" target="help/topics/DecompilePlugin/DecompilerAnnotations.html#AnnotePrototype"/>
|
||||||
|
|
|
@ -1,59 +0,0 @@
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
|
|
||||||
<title>Decompiler</title>
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../shared/Frontpage.css">
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../shared/languages.css">
|
|
||||||
<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
|
|
||||||
<link rel="home" href="Decompiler.html" title="Decompiler">
|
|
||||||
<link rel="next" href="DecompilerIntro.html" title="Decompiler">
|
|
||||||
</head>
|
|
||||||
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
|
||||||
<div class="navheader">
|
|
||||||
<table width="100%" summary="Navigation header">
|
|
||||||
<tr><th colspan="3" align="center">Decompiler</th></tr>
|
|
||||||
<tr>
|
|
||||||
<td width="20%" align="left"> </td>
|
|
||||||
<th width="60%" align="center"> </th>
|
|
||||||
<td width="20%" align="right"> <a accesskey="n" href="DecompilerIntro.html">Next</a>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
<hr>
|
|
||||||
</div>
|
|
||||||
<div class="book">
|
|
||||||
<div class="titlepage">
|
|
||||||
<div><div><h1 class="title">
|
|
||||||
<a name="idm140185515313584"></a>Decompiler</h1></div></div>
|
|
||||||
<hr>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div class="navfooter">
|
|
||||||
<hr>
|
|
||||||
<table width="100%" summary="Navigation footer">
|
|
||||||
<tr>
|
|
||||||
<td width="40%" align="left"> </td>
|
|
||||||
<td width="20%" align="center"> </td>
|
|
||||||
<td width="40%" align="right"> <a accesskey="n" href="DecompilerIntro.html">Next</a>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td width="40%" align="left" valign="top"> </td>
|
|
||||||
<td width="20%" align="center"> </td>
|
|
||||||
<td width="40%" align="right" valign="top"> Decompiler</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -10,21 +10,7 @@
|
||||||
<link rel="prev" href="DecompilerConcepts.html" title="Decompiler Concepts">
|
<link rel="prev" href="DecompilerConcepts.html" title="Decompiler Concepts">
|
||||||
<link rel="next" href="DecompilerOptions.html" title="Decompiler Options">
|
<link rel="next" href="DecompilerOptions.html" title="Decompiler Options">
|
||||||
</head>
|
</head>
|
||||||
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="chapter">
|
||||||
<div class="navheader">
|
|
||||||
<table width="100%" summary="Navigation header">
|
|
||||||
<tr><th colspan="3" align="center">Program Annotations Affecting the Decompiler</th></tr>
|
|
||||||
<tr>
|
|
||||||
<td width="20%" align="left">
|
|
||||||
<a accesskey="p" href="DecompilerConcepts.html">Prev</a> </td>
|
|
||||||
<th width="60%" align="center"> </th>
|
|
||||||
<td width="20%" align="right"> <a accesskey="n" href="DecompilerOptions.html">Next</a>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
<hr>
|
|
||||||
</div>
|
|
||||||
<div class="chapter">
|
|
||||||
<div class="titlepage"><div><div><h1 class="title">
|
<div class="titlepage"><div><div><h1 class="title">
|
||||||
<a name="DecompilerAnnotations"></a>Program Annotations Affecting the Decompiler</h1></div></div></div>
|
<a name="DecompilerAnnotations"></a>Program Annotations Affecting the Decompiler</h1></div></div></div>
|
||||||
|
|
||||||
|
@ -63,7 +49,7 @@
|
||||||
</p>
|
</p>
|
||||||
<div class="sect2">
|
<div class="sect2">
|
||||||
<div class="titlepage"><div><div><h3 class="title">
|
<div class="titlepage"><div><div><h3 class="title">
|
||||||
<a name="ConceptEntryPoint"></a>Entry Point</h3></div></div></div>
|
<a name="AnnoteEntryPoint"></a>Entry Point</h3></div></div></div>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
The <span class="emphasis"><em>entry point</em></span> address for a function plays a pivotal role for
|
The <span class="emphasis"><em>entry point</em></span> address for a function plays a pivotal role for
|
||||||
|
@ -86,7 +72,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="sect2">
|
<div class="sect2">
|
||||||
<div class="titlepage"><div><div><h3 class="title">
|
<div class="titlepage"><div><div><h3 class="title">
|
||||||
<a name="ConceptFunctionBody"></a>Formal Function Body</h3></div></div></div>
|
<a name="AnnoteFormalFunctionBody"></a>Formal Function Body</h3></div></div></div>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
When a function is created, Ghidra stores its function body as a set of addresses in the
|
When a function is created, Ghidra stores its function body as a set of addresses in the
|
||||||
|
@ -96,9 +82,9 @@
|
||||||
in particular use the formal function body to know which function to decompile in response
|
in particular use the formal function body to know which function to decompile in response
|
||||||
to a navigation event to an arbitrary address.
|
to a navigation event to an arbitrary address.
|
||||||
</p>
|
</p>
|
||||||
<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note">
|
<div class="warning" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Warning">
|
||||||
<tr>
|
<tr>
|
||||||
<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="images/note.png"></td>
|
<td rowspan="2" align="center" valign="top" width="25"><img alt="[Warning]" src="../../shared/warning.png"></td>
|
||||||
<th align="left"></th>
|
<th align="left"></th>
|
||||||
</tr>
|
</tr>
|
||||||
<tr><td align="left" valign="top">
|
<tr><td align="left" valign="top">
|
||||||
|
@ -114,7 +100,7 @@
|
||||||
|
|
||||||
<div class="sect2">
|
<div class="sect2">
|
||||||
<div class="titlepage"><div><div><h3 class="title">
|
<div class="titlepage"><div><div><h3 class="title">
|
||||||
<a name="ConceptFlowOverride"></a>Flow Overrides</h3></div></div></div>
|
<a name="AnnoteFlowOverride"></a>Flow Overrides</h3></div></div></div>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
Control-flow behavior for machine instructions is generally determined by the underlying
|
Control-flow behavior for machine instructions is generally determined by the underlying
|
||||||
|
@ -261,9 +247,9 @@
|
||||||
types can be configured to display in decompiler output, by changing the
|
types can be configured to display in decompiler output, by changing the
|
||||||
decompiler Display options (See <a class="xref" href="DecompilerOptions.html#CommentOptions"><span class="bold"><strong>Display <kind-of> Comments</strong></span></a>).
|
decompiler Display options (See <a class="xref" href="DecompilerOptions.html#CommentOptions"><span class="bold"><strong>Display <kind-of> Comments</strong></span></a>).
|
||||||
</p>
|
</p>
|
||||||
<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note">
|
<div class="warning" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Warning">
|
||||||
<tr>
|
<tr>
|
||||||
<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="images/note.png"></td>
|
<td rowspan="2" align="center" valign="top" width="25"><img alt="[Warning]" src="../../shared/warning.png"></td>
|
||||||
<th align="left"></th>
|
<th align="left"></th>
|
||||||
</tr>
|
</tr>
|
||||||
<tr><td align="left" valign="top">
|
<tr><td align="left" valign="top">
|
||||||
|
@ -459,7 +445,7 @@
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
Local variables,
|
Local variables,
|
||||||
in constrast, do not generally exist across the whole function, but come into scope
|
in contrast, do not generally exist across the whole function, but come into scope
|
||||||
at the instruction that first writes to them, and then exist only up to the last
|
at the instruction that first writes to them, and then exist only up to the last
|
||||||
instruction that reads them. The memory location storing a local variable
|
instruction that reads them. The memory location storing a local variable
|
||||||
at one point of the function may be reused for different variables at other points.
|
at one point of the function may be reused for different variables at other points.
|
||||||
|
@ -568,7 +554,7 @@
|
||||||
<a name="TypeChar"></a>Character</h5></div></div></div>
|
<a name="TypeChar"></a>Character</h5></div></div></div>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
ASCII or unicode encoded character data-types are supported for sizes of 1, 2, and 4. The size affectively
|
ASCII or Unicode encoded character data-types are supported for sizes of 1, 2, and 4. The size effectively
|
||||||
chooses between the UTF8, UTF16, and UTF32 character encodings respectively. The standard
|
chooses between the UTF8, UTF16, and UTF32 character encodings respectively. The standard
|
||||||
C data-type names <span class="bold"><strong>char</strong></span> and <span class="bold"><strong>wchar_t</strong></span> are
|
C data-type names <span class="bold"><strong>char</strong></span> and <span class="bold"><strong>wchar_t</strong></span> are
|
||||||
mapped to one of these sizes based on the
|
mapped to one of these sizes based on the
|
||||||
|
@ -602,7 +588,7 @@
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
Strings should be fully rendered in decompiler output,
|
Strings should be fully rendered in decompiler output,
|
||||||
with non-printable characters escaped using either traditional sequences like '\r', '\n' or using unicode
|
with non-printable characters escaped using either traditional sequences like '\r', '\n' or using Unicode
|
||||||
escape sequences like '\xFF'.
|
escape sequences like '\xFF'.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
@ -662,7 +648,7 @@
|
||||||
single value in the enumeration definition, the decompiler attempts to build a matching
|
single value in the enumeration definition, the decompiler attempts to build a matching
|
||||||
value by <span class="emphasis"><em>or</em></span>-ing together multiple labels.
|
value by <span class="emphasis"><em>or</em></span>-ing together multiple labels.
|
||||||
The decompiler can be made to break out constants representing packed <span class="emphasis"><em>flags</em></span>,
|
The decompiler can be made to break out constants representing packed <span class="emphasis"><em>flags</em></span>,
|
||||||
for instance, by labeling individal bit values within an enumeration.
|
for instance, by labeling individual bit values within an enumeration.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="sect4">
|
<div class="sect4">
|
||||||
|
@ -741,9 +727,9 @@
|
||||||
but the variable representing the storage location being annotated is guaranteed to have
|
but the variable representing the storage location being annotated is guaranteed to have
|
||||||
the given name and that data-type; it will not be overridden.
|
the given name and that data-type; it will not be overridden.
|
||||||
</p>
|
</p>
|
||||||
<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note">
|
<div class="warning" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Warning">
|
||||||
<tr>
|
<tr>
|
||||||
<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="images/note.png"></td>
|
<td rowspan="2" align="center" valign="top" width="25"><img alt="[Warning]" src="../../shared/warning.png"></td>
|
||||||
<th align="left"></th>
|
<th align="left"></th>
|
||||||
</tr>
|
</tr>
|
||||||
<tr><td align="left" valign="top">
|
<tr><td align="left" valign="top">
|
||||||
|
@ -799,7 +785,7 @@
|
||||||
</p>
|
</p>
|
||||||
<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note">
|
<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note">
|
||||||
<tr>
|
<tr>
|
||||||
<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="images/note.png"></td>
|
<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../shared/note.png"></td>
|
||||||
<th align="left"></th>
|
<th align="left"></th>
|
||||||
</tr>
|
</tr>
|
||||||
<tr><td align="left" valign="top">
|
<tr><td align="left" valign="top">
|
||||||
|
@ -998,7 +984,7 @@
|
||||||
<dt><span class="term"><span class="bold"><strong>Variable Arguments</strong></span></span></dt>
|
<dt><span class="term"><span class="bold"><strong>Variable Arguments</strong></span></span></dt>
|
||||||
<dd>
|
<dd>
|
||||||
<p>
|
<p>
|
||||||
Functions have a boolean property called <span class="bold"><strong>variable argments</strong></span>, which can be turned on
|
Functions have a boolean property called <span class="bold"><strong>variable arguments</strong></span>, which can be turned on
|
||||||
if the function is capable of being passed a variable number of inputs. This property informs the decompiler that
|
if the function is capable of being passed a variable number of inputs. This property informs the decompiler that
|
||||||
the function may take additional parameters beyond any with an explicit variable annotation.
|
the function may take additional parameters beyond any with an explicit variable annotation.
|
||||||
This affects decompilation of any function which calls the <span class="emphasis"><em>variable arguments</em></span> function, allowing
|
This affects decompilation of any function which calls the <span class="emphasis"><em>variable arguments</em></span> function, allowing
|
||||||
|
@ -1058,9 +1044,9 @@
|
||||||
See the complete discussion in <a class="xref" href="DecompilerAnnotations.html#AnnoteForcing" title="Forcing Data-types">“Forcing Data-types”</a>.
|
See the complete discussion in <a class="xref" href="DecompilerAnnotations.html#AnnoteForcing" title="Forcing Data-types">“Forcing Data-types”</a>.
|
||||||
But keep in mind:
|
But keep in mind:
|
||||||
</p>
|
</p>
|
||||||
<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note">
|
<div class="warning" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Warning">
|
||||||
<tr>
|
<tr>
|
||||||
<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="images/note.png"></td>
|
<td rowspan="2" align="center" valign="top" width="25"><img alt="[Warning]" src="../../shared/warning.png"></td>
|
||||||
<th align="left"></th>
|
<th align="left"></th>
|
||||||
</tr>
|
</tr>
|
||||||
<tr><td align="left" valign="top">
|
<tr><td align="left" valign="top">
|
||||||
|
@ -1268,23 +1254,5 @@
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div></body>
|
||||||
<div class="navfooter">
|
|
||||||
<hr>
|
|
||||||
<table width="100%" summary="Navigation footer">
|
|
||||||
<tr>
|
|
||||||
<td width="40%" align="left">
|
|
||||||
<a accesskey="p" href="DecompilerConcepts.html">Prev</a> </td>
|
|
||||||
<td width="20%" align="center"> </td>
|
|
||||||
<td width="40%" align="right"> <a accesskey="n" href="DecompilerOptions.html">Next</a>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td width="40%" align="left" valign="top">Decompiler Concepts </td>
|
|
||||||
<td width="20%" align="center"><a accesskey="h" href="Decompiler.html">Home</a></td>
|
|
||||||
<td width="40%" align="right" valign="top"> Decompiler Options</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -10,21 +10,7 @@
|
||||||
<link rel="prev" href="DecompilerIntro.html" title="Decompiler">
|
<link rel="prev" href="DecompilerIntro.html" title="Decompiler">
|
||||||
<link rel="next" href="DecompilerAnnotations.html" title="Program Annotations Affecting the Decompiler">
|
<link rel="next" href="DecompilerAnnotations.html" title="Program Annotations Affecting the Decompiler">
|
||||||
</head>
|
</head>
|
||||||
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="chapter">
|
||||||
<div class="navheader">
|
|
||||||
<table width="100%" summary="Navigation header">
|
|
||||||
<tr><th colspan="3" align="center">Decompiler Concepts</th></tr>
|
|
||||||
<tr>
|
|
||||||
<td width="20%" align="left">
|
|
||||||
<a accesskey="p" href="DecompilerIntro.html">Prev</a> </td>
|
|
||||||
<th width="60%" align="center"> </th>
|
|
||||||
<td width="20%" align="right"> <a accesskey="n" href="DecompilerAnnotations.html">Next</a>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
<hr>
|
|
||||||
</div>
|
|
||||||
<div class="chapter">
|
|
||||||
<div class="titlepage"><div><div><h1 class="title">
|
<div class="titlepage"><div><div><h1 class="title">
|
||||||
<a name="DecompilerConcepts"></a>Decompiler Concepts</h1></div></div></div>
|
<a name="DecompilerConcepts"></a>Decompiler Concepts</h1></div></div></div>
|
||||||
|
|
||||||
|
@ -911,7 +897,7 @@
|
||||||
</div>
|
</div>
|
||||||
<p>
|
<p>
|
||||||
The scope extends via control-flow to each p-code operation that <span class="emphasis"><em>reads</em></span> the
|
The scope extends via control-flow to each p-code operation that <span class="emphasis"><em>reads</em></span> the
|
||||||
specific varnode as an operand. The value of the varnode between the definining p-code operation
|
specific varnode as an operand. The value of the varnode between the defining p-code operation
|
||||||
and the reading operations does not change. The scope of a varnode can be thought of as a set
|
and the reading operations does not change. The scope of a varnode can be thought of as a set
|
||||||
of addresses within the function's body connected by control-flow. The address of the defining
|
of addresses within the function's body connected by control-flow. The address of the defining
|
||||||
p-code operation is referred to as the varnode's <span class="bold"><strong>first use point</strong></span>
|
p-code operation is referred to as the varnode's <span class="bold"><strong>first use point</strong></span>
|
||||||
|
@ -1054,7 +1040,7 @@
|
||||||
<a name="ConceptPrototypeKilledByCall"></a>Killed by Call</h4></div></div></div>
|
<a name="ConceptPrototypeKilledByCall"></a>Killed by Call</h4></div></div></div>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
In constrast to <span class="emphasis"><em>unaffected</em></span> memory locations, a prototype model may specify
|
In contrast to <span class="emphasis"><em>unaffected</em></span> memory locations, a prototype model may specify
|
||||||
<span class="bold"><strong>killed by call</strong></span> locations that are guaranteed <span class="emphasis"><em>not</em></span>
|
<span class="bold"><strong>killed by call</strong></span> locations that are guaranteed <span class="emphasis"><em>not</em></span>
|
||||||
to be used to hold a value across the function.
|
to be used to hold a value across the function.
|
||||||
</p>
|
</p>
|
||||||
|
@ -1062,23 +1048,5 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div></body>
|
||||||
<div class="navfooter">
|
|
||||||
<hr>
|
|
||||||
<table width="100%" summary="Navigation footer">
|
|
||||||
<tr>
|
|
||||||
<td width="40%" align="left">
|
|
||||||
<a accesskey="p" href="DecompilerIntro.html">Prev</a> </td>
|
|
||||||
<td width="20%" align="center"> </td>
|
|
||||||
<td width="40%" align="right"> <a accesskey="n" href="DecompilerAnnotations.html">Next</a>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td width="40%" align="left" valign="top">Decompiler </td>
|
|
||||||
<td width="20%" align="center"><a accesskey="h" href="Decompiler.html">Home</a></td>
|
|
||||||
<td width="40%" align="right" valign="top"> Program Annotations Affecting the Decompiler</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -10,21 +10,7 @@
|
||||||
<link rel="prev" href="Decompiler.html" title="Decompiler">
|
<link rel="prev" href="Decompiler.html" title="Decompiler">
|
||||||
<link rel="next" href="DecompilerConcepts.html" title="Decompiler Concepts">
|
<link rel="next" href="DecompilerConcepts.html" title="Decompiler Concepts">
|
||||||
</head>
|
</head>
|
||||||
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="chapter">
|
||||||
<div class="navheader">
|
|
||||||
<table width="100%" summary="Navigation header">
|
|
||||||
<tr><th colspan="3" align="center">Decompiler</th></tr>
|
|
||||||
<tr>
|
|
||||||
<td width="20%" align="left">
|
|
||||||
<a accesskey="p" href="Decompiler.html">Prev</a> </td>
|
|
||||||
<th width="60%" align="center"> </th>
|
|
||||||
<td width="20%" align="right"> <a accesskey="n" href="DecompilerConcepts.html">Next</a>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
<hr>
|
|
||||||
</div>
|
|
||||||
<div class="chapter">
|
|
||||||
<div class="titlepage"><div><div><h1 class="title">
|
<div class="titlepage"><div><div><h1 class="title">
|
||||||
<a name="DecompilerIntro"></a>Decompiler</h1></div></div></div>
|
<a name="DecompilerIntro"></a>Decompiler</h1></div></div></div>
|
||||||
|
|
||||||
|
@ -164,23 +150,5 @@
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div></body>
|
||||||
<div class="navfooter">
|
|
||||||
<hr>
|
|
||||||
<table width="100%" summary="Navigation footer">
|
|
||||||
<tr>
|
|
||||||
<td width="40%" align="left">
|
|
||||||
<a accesskey="p" href="Decompiler.html">Prev</a> </td>
|
|
||||||
<td width="20%" align="center"> </td>
|
|
||||||
<td width="40%" align="right"> <a accesskey="n" href="DecompilerConcepts.html">Next</a>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td width="40%" align="left" valign="top">Decompiler </td>
|
|
||||||
<td width="20%" align="center"><a accesskey="h" href="Decompiler.html">Home</a></td>
|
|
||||||
<td width="40%" align="right" valign="top"> Decompiler Concepts</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -10,21 +10,7 @@
|
||||||
<link rel="prev" href="DecompilerAnnotations.html" title="Program Annotations Affecting the Decompiler">
|
<link rel="prev" href="DecompilerAnnotations.html" title="Program Annotations Affecting the Decompiler">
|
||||||
<link rel="next" href="DecompilerWindow.html" title="Decompiler Window">
|
<link rel="next" href="DecompilerWindow.html" title="Decompiler Window">
|
||||||
</head>
|
</head>
|
||||||
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="chapter">
|
||||||
<div class="navheader">
|
|
||||||
<table width="100%" summary="Navigation header">
|
|
||||||
<tr><th colspan="3" align="center">Decompiler Options</th></tr>
|
|
||||||
<tr>
|
|
||||||
<td width="20%" align="left">
|
|
||||||
<a accesskey="p" href="DecompilerAnnotations.html">Prev</a> </td>
|
|
||||||
<th width="60%" align="center"> </th>
|
|
||||||
<td width="20%" align="right"> <a accesskey="n" href="DecompilerWindow.html">Next</a>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
<hr>
|
|
||||||
</div>
|
|
||||||
<div class="chapter">
|
|
||||||
<div class="titlepage"><div><div><h1 class="title">
|
<div class="titlepage"><div><div><h1 class="title">
|
||||||
<a name="DecompilerOptions"></a>Decompiler Options</h1></div></div></div>
|
<a name="DecompilerOptions"></a>Decompiler Options</h1></div></div></div>
|
||||||
|
|
||||||
|
@ -299,7 +285,7 @@
|
||||||
<dd>
|
<dd>
|
||||||
<p>
|
<p>
|
||||||
Assign the color to any characters emitted by the decompiler that do not fall into one of token types
|
Assign the color to any characters emitted by the decompiler that do not fall into one of token types
|
||||||
listed above. This includes delimiter characters like commas and parantheses as well as various <span class="emphasis"><em>operator</em></span>
|
listed above. This includes delimiter characters like commas and parentheses as well as various <span class="emphasis"><em>operator</em></span>
|
||||||
characters.
|
characters.
|
||||||
</p>
|
</p>
|
||||||
</dd>
|
</dd>
|
||||||
|
@ -422,7 +408,7 @@
|
||||||
<dd>
|
<dd>
|
||||||
<p>
|
<p>
|
||||||
Toggle whether decompiler generated <span class="emphasis"><em>WARNING</em></span> comments are displayed as part
|
Toggle whether decompiler generated <span class="emphasis"><em>WARNING</em></span> comments are displayed as part
|
||||||
of the output. The decompiler generates these comments, independent of those layed down by users, to
|
of the output. The decompiler generates these comments, independent of those laid down by users, to
|
||||||
indicate unusual conditions or possible errors (See <a class="xref" href="DecompilerAnnotations.html#CommentWarnings" title="Warning Comments">“Warning Comments”</a>).
|
indicate unusual conditions or possible errors (See <a class="xref" href="DecompilerAnnotations.html#CommentWarnings" title="Warning Comments">“Warning Comments”</a>).
|
||||||
</p>
|
</p>
|
||||||
</dd>
|
</dd>
|
||||||
|
@ -530,23 +516,5 @@
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div></body>
|
||||||
<div class="navfooter">
|
|
||||||
<hr>
|
|
||||||
<table width="100%" summary="Navigation footer">
|
|
||||||
<tr>
|
|
||||||
<td width="40%" align="left">
|
|
||||||
<a accesskey="p" href="DecompilerAnnotations.html">Prev</a> </td>
|
|
||||||
<td width="20%" align="center"> </td>
|
|
||||||
<td width="40%" align="right"> <a accesskey="n" href="DecompilerWindow.html">Next</a>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td width="40%" align="left" valign="top">Program Annotations Affecting the Decompiler </td>
|
|
||||||
<td width="20%" align="center"><a accesskey="h" href="Decompiler.html">Home</a></td>
|
|
||||||
<td width="40%" align="right" valign="top"> Decompiler Window</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -9,20 +9,7 @@
|
||||||
<link rel="up" href="Decompiler.html" title="Decompiler">
|
<link rel="up" href="Decompiler.html" title="Decompiler">
|
||||||
<link rel="prev" href="DecompilerOptions.html" title="Decompiler Options">
|
<link rel="prev" href="DecompilerOptions.html" title="Decompiler Options">
|
||||||
</head>
|
</head>
|
||||||
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="chapter">
|
||||||
<div class="navheader">
|
|
||||||
<table width="100%" summary="Navigation header">
|
|
||||||
<tr><th colspan="3" align="center">Decompiler Window</th></tr>
|
|
||||||
<tr>
|
|
||||||
<td width="20%" align="left">
|
|
||||||
<a accesskey="p" href="DecompilerOptions.html">Prev</a> </td>
|
|
||||||
<th width="60%" align="center"> </th>
|
|
||||||
<td width="20%" align="right"> </td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
<hr>
|
|
||||||
</div>
|
|
||||||
<div class="chapter">
|
|
||||||
<div class="titlepage"><div><div><h1 class="title">
|
<div class="titlepage"><div><div><h1 class="title">
|
||||||
<a name="DecompilerWindow"></a>Decompiler Window</h1></div></div></div>
|
<a name="DecompilerWindow"></a>Decompiler Window</h1></div></div></div>
|
||||||
|
|
||||||
|
@ -100,7 +87,7 @@
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
Initially pushing <span class="guiicon"><img src="images/decompileFunction.gif"></span> or selecting
|
Initially pushing <span class="guiicon"><img src="images/decompileFunction.gif"></span> or selecting
|
||||||
<span class="bold"><strong>Decompile</strong></span> from <span class="bold"><strong>Window</strong></span> menu in the tool
|
<span class="bold"><strong>Decompile</strong></span> from the <span class="bold"><strong>Window</strong></span> menu in the tool
|
||||||
brings up the <span class="emphasis"><em>main</em></span> window. The main window always displays the function
|
brings up the <span class="emphasis"><em>main</em></span> window. The main window always displays the function
|
||||||
at the <span class="emphasis"><em>current address</em></span> within the Code Browser and follows as the user navigates
|
at the <span class="emphasis"><em>current address</em></span> within the Code Browser and follows as the user navigates
|
||||||
within the Program. Any mouse click, menu option, or other action causing the cursor to move to a new
|
within the Program. Any mouse click, menu option, or other action causing the cursor to move to a new
|
||||||
|
@ -137,9 +124,9 @@
|
||||||
<p>
|
<p>
|
||||||
<span class="emphasis"><em>Comment</em></span> tokens map to the machine address associated with the comment.
|
<span class="emphasis"><em>Comment</em></span> tokens map to the machine address associated with the comment.
|
||||||
</p>
|
</p>
|
||||||
<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note">
|
<div class="warning" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Warning">
|
||||||
<tr>
|
<tr>
|
||||||
<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="images/note.png"></td>
|
<td rowspan="2" align="center" valign="top" width="25"><img alt="[Warning]" src="../../shared/warning.png"></td>
|
||||||
<th align="left"></th>
|
<th align="left"></th>
|
||||||
</tr>
|
</tr>
|
||||||
<tr><td align="left" valign="top">
|
<tr><td align="left" valign="top">
|
||||||
|
@ -242,9 +229,9 @@
|
||||||
Triggers a re-decompilation of the current function displayed in the window.
|
Triggers a re-decompilation of the current function displayed in the window.
|
||||||
Any cached results are discarded, and a full decompile is performed.
|
Any cached results are discarded, and a full decompile is performed.
|
||||||
</p>
|
</p>
|
||||||
<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note">
|
<div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Tip">
|
||||||
<tr>
|
<tr>
|
||||||
<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="images/note.png"></td>
|
<td rowspan="2" align="center" valign="top" width="25"><img alt="[Tip]" src="../../shared/tip.png"></td>
|
||||||
<th align="left"></th>
|
<th align="left"></th>
|
||||||
</tr>
|
</tr>
|
||||||
<tr><td align="left" valign="top">
|
<tr><td align="left" valign="top">
|
||||||
|
@ -300,9 +287,9 @@
|
||||||
Generate a control-flow graph based upon the results in the active Decompiler Window,
|
Generate a control-flow graph based upon the results in the active Decompiler Window,
|
||||||
and render it using the current Graph Service.
|
and render it using the current Graph Service.
|
||||||
</p>
|
</p>
|
||||||
<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note">
|
<div class="warning" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Warning">
|
||||||
<tr>
|
<tr>
|
||||||
<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="images/note.png"></td>
|
<td rowspan="2" align="center" valign="top" width="25"><img alt="[Warning]" src="../../shared/warning.png"></td>
|
||||||
<th align="left"></th>
|
<th align="left"></th>
|
||||||
</tr>
|
</tr>
|
||||||
<tr><td align="left" valign="top">
|
<tr><td align="left" valign="top">
|
||||||
|
@ -684,13 +671,22 @@
|
||||||
<div class="informalexample">
|
<div class="informalexample">
|
||||||
<div class="variablelist"><dl class="variablelist">
|
<div class="variablelist"><dl class="variablelist">
|
||||||
<dt><span class="term"><span class="bold"><strong>Def-Use</strong></span></span></dt>
|
<dt><span class="term"><span class="bold"><strong>Def-Use</strong></span></span></dt>
|
||||||
<dd><p>
|
<dd>
|
||||||
|
<p>
|
||||||
Highlight the single token where the selected variable was last written (def),
|
Highlight the single token where the selected variable was last written (def),
|
||||||
and highlight all the tokens where that single value is read (use). The written token,
|
and highlight all the tokens where that single value is read (use). The written token,
|
||||||
generally where the variable is on the left-hand side of an assignment expression,
|
generally where the variable is on the left-hand side of an assignment expression,
|
||||||
is highlighted in a different color. If the variable is written on multiple merging
|
is highlighted in a different color. If the variable is written on multiple merging
|
||||||
control-flow paths, no written token is highlighted.
|
control-flow paths, no written token is highlighted.
|
||||||
</p></dd>
|
</p>
|
||||||
|
<p>
|
||||||
|
In the following example, the token representing the first write to the
|
||||||
|
variable <span class="emphasis"><em>a</em></span> is selected when Def-Use is chosen.
|
||||||
|
</p>
|
||||||
|
<div class="mediaobject" align="center"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="100%"><tr><td align="center"><img src="images/Defuse.png" align="middle" width="346" height="257"></td></tr></table></div>
|
||||||
|
<p>
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
<dt><span class="term"><span class="bold"><strong>Forward Slice</strong></span></span></dt>
|
<dt><span class="term"><span class="bold"><strong>Forward Slice</strong></span></span></dt>
|
||||||
<dd>
|
<dd>
|
||||||
<p>
|
<p>
|
||||||
|
@ -898,7 +894,7 @@
|
||||||
A new or child namespace can
|
A new or child namespace can
|
||||||
be specified by prepending the base name with the namespace using the C++ '::'
|
be specified by prepending the base name with the namespace using the C++ '::'
|
||||||
separator characters. Any namespace path entered this way is considered relative
|
separator characters. Any namespace path entered this way is considered relative
|
||||||
to the namespace set in the drop-down meu, so the <span class="bold"><strong>Global</strong></span>
|
to the namespace set in the drop-down menu, so the <span class="bold"><strong>Global</strong></span>
|
||||||
namespace may need to be selected if the user wants to specify an absolute path. If
|
namespace may need to be selected if the user wants to specify an absolute path. If
|
||||||
any path element of the namespace does not exist, it is created.
|
any path element of the namespace does not exist, it is created.
|
||||||
</p>
|
</p>
|
||||||
|
@ -958,7 +954,7 @@
|
||||||
A new or child namespace can
|
A new or child namespace can
|
||||||
be specified by prepending the base name with the namespace using the C++ '::'
|
be specified by prepending the base name with the namespace using the C++ '::'
|
||||||
separator characters. Any namespace path entered this way is considered relative
|
separator characters. Any namespace path entered this way is considered relative
|
||||||
to the namespace set in the drop-down meu, so the <span class="bold"><strong>Global</strong></span>
|
to the namespace set in the drop-down menu, so the <span class="bold"><strong>Global</strong></span>
|
||||||
namespace may need to be selected if the user wants to specify an absolute path. If
|
namespace may need to be selected if the user wants to specify an absolute path. If
|
||||||
any path element of the namespace does not exist, it is created.
|
any path element of the namespace does not exist, it is created.
|
||||||
</p>
|
</p>
|
||||||
|
@ -1065,7 +1061,7 @@
|
||||||
the return value (named <code class="code"><RETURN></code>) did not exist previously, one is created.
|
the return value (named <code class="code"><RETURN></code>) did not exist previously, one is created.
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
As input parameter annotations and the return value annotation must be commited as a whole
|
As input parameter annotations and the return value annotation must be committed as a whole
|
||||||
(see the discussion of function prototype's in <a class="xref" href="DecompilerAnnotations.html#AnnoteForcing" title="Forcing Data-types">“Forcing Data-types”</a>), if
|
(see the discussion of function prototype's in <a class="xref" href="DecompilerAnnotations.html#AnnoteForcing" title="Forcing Data-types">“Forcing Data-types”</a>), if
|
||||||
no prototype existed previously, this action also causes variable annotations for all
|
no prototype existed previously, this action also causes variable annotations for all
|
||||||
input parameters to be created as well. In this situation, the action is equivalent to
|
input parameters to be created as well. In this situation, the action is equivalent to
|
||||||
|
@ -1133,22 +1129,5 @@
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div></body>
|
||||||
<div class="navfooter">
|
|
||||||
<hr>
|
|
||||||
<table width="100%" summary="Navigation footer">
|
|
||||||
<tr>
|
|
||||||
<td width="40%" align="left">
|
|
||||||
<a accesskey="p" href="DecompilerOptions.html">Prev</a> </td>
|
|
||||||
<td width="20%" align="center"> </td>
|
|
||||||
<td width="40%" align="right"> </td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td width="40%" align="left" valign="top">Decompiler Options </td>
|
|
||||||
<td width="20%" align="center"><a accesskey="h" href="Decompiler.html">Home</a></td>
|
|
||||||
<td width="40%" align="right" valign="top"> </td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -66,7 +66,7 @@
|
||||||
"help/topics/CodeBrowserPlugin/CodeBrowser.htm">Listing</A> cursor on the symbol you want
|
"help/topics/CodeBrowserPlugin/CodeBrowser.htm">Listing</A> cursor on the symbol you want
|
||||||
to lookup and choose from the menu <B>Navigation → Go To Symbol Source</B>.</P>
|
to lookup and choose from the menu <B>Navigation → Go To Symbol Source</B>.</P>
|
||||||
<P>You can also execute this action when your cursor is in the <A href=
|
<P>You can also execute this action when your cursor is in the <A href=
|
||||||
"help/topics/DecompilePlugin/Decompiler.htm">Decompiler</A>.<P>
|
"help/topics/DecompilePlugin/DecompilerIntro.html">Decompiler</A>.<P>
|
||||||
</BLOCKQUOTE>
|
</BLOCKQUOTE>
|
||||||
|
|
||||||
<H2>Troubleshooting</H2>
|
<H2>Troubleshooting</H2>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue