mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2026-09-28 17:11:11 -09:00
Documentation for INSERT, EXTRACT, and POPCOUNT operators
This commit is contained in:
@@ -119,6 +119,26 @@
|
||||
<td>Branch execution to value in v0 viewed as an offset into the current space.
|
||||
Hint that the branch is a subroutine return.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>PIECE</td>
|
||||
<td><code class="code"><na></code></td>
|
||||
<td>Concatenate two varnodes into a single varnode.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>SUBPIECE</td>
|
||||
<td><code class="code">v0:2</code></td>
|
||||
<td>The least signficant n bytes of v0.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>SUBPIECE</td>
|
||||
<td><code class="code">v0(2)</code></td>
|
||||
<td>All but the least significant n bytes of v0.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>POPCOUNT</td>
|
||||
<td><code class="code">popcount(v0)</code></td>
|
||||
<td>Count 1 bits in v0.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>INT_EQUAL</td>
|
||||
<td><code class="code">v0 == v1</code></td>
|
||||
@@ -129,38 +149,6 @@
|
||||
<td><code class="code">v0 != v1</code></td>
|
||||
<td>True if v0 does not equal v1.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>INT_SLESS</td>
|
||||
<td>
|
||||
<div class="table">
|
||||
<a name="sless.htmltable"></a><table frame="none"><tbody>
|
||||
<tr>
|
||||
<td><code class="code">v0 s< v1</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code class="code">v1 s> v0</code></td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
</div>
|
||||
</td>
|
||||
<td>True if v0 is less than v1 as a signed integer.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>INT_SLESSEQUAL</td>
|
||||
<td>
|
||||
<div class="table">
|
||||
<a name="slessequal.htmltable"></a><table frame="none"><tbody>
|
||||
<tr>
|
||||
<td><code class="code">v0 s<= v1</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code class="code">v1 s>= v0</code></td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
</div>
|
||||
</td>
|
||||
<td>True if v0 is less than or equal to v1 as a signed integer.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>INT_LESS</td>
|
||||
<td>
|
||||
@@ -177,6 +165,22 @@
|
||||
</td>
|
||||
<td>True if v0 is less than v1 as an unsigned integer.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>INT_SLESS</td>
|
||||
<td>
|
||||
<div class="table">
|
||||
<a name="sless.htmltable"></a><table frame="none"><tbody>
|
||||
<tr>
|
||||
<td><code class="code">v0 s< v1</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code class="code">v1 s> v0</code></td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
</div>
|
||||
</td>
|
||||
<td>True if v0 is less than v1 as a signed integer.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>INT_LESSEQUAL</td>
|
||||
<td>
|
||||
@@ -193,6 +197,22 @@
|
||||
</td>
|
||||
<td>True if v0 is less than or equal to v1 as an unsigned integer.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>INT_SLESSEQUAL</td>
|
||||
<td>
|
||||
<div class="table">
|
||||
<a name="slessequal.htmltable"></a><table frame="none"><tbody>
|
||||
<tr>
|
||||
<td><code class="code">v0 s<= v1</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code class="code">v1 s>= v0</code></td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
</div>
|
||||
</td>
|
||||
<td>True if v0 is less than or equal to v1 as a signed integer.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>INT_ZEXT</td>
|
||||
<td><code class="code">zext(v0)</code></td>
|
||||
@@ -278,16 +298,16 @@
|
||||
<td><code class="code">v0 / v1</code></td>
|
||||
<td>Unsigned division of v0 by v1.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>INT_SDIV</td>
|
||||
<td><code class="code">v0 s/ v1</code></td>
|
||||
<td>Signed division of v0 by v1.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>INT_REM</td>
|
||||
<td><code class="code">v0 % v1</code></td>
|
||||
<td>Unsigned remainder of v0 modulo v1.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>INT_SDIV</td>
|
||||
<td><code class="code">v0 s/ v1</code></td>
|
||||
<td>Signed division of v0 by v1.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>INT_SREM</td>
|
||||
<td><code class="code">v0 s% v1</code></td>
|
||||
@@ -355,20 +375,15 @@
|
||||
</td>
|
||||
<td>True if v0 is less than or equal to v1 viewed as floating-point numbers.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>FLOAT_NAN</td>
|
||||
<td><code class="code">nan(v0)</code></td>
|
||||
<td>True if v0 is not a valid floating-point number (NaN).</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>FLOAT_ADD</td>
|
||||
<td><code class="code">v0 f+ v1</code></td>
|
||||
<td>Addition of v0 and v1 as floating-point numbers.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>FLOAT_DIV</td>
|
||||
<td><code class="code">v0 f/ v1</code></td>
|
||||
<td>Division of v0 by v1 as floating-point numbers.</td>
|
||||
<td>FLOAT_SUB</td>
|
||||
<td><code class="code">v0 f- v1</code></td>
|
||||
<td>Subtraction of v1 from v0 as floating-point numbers.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>FLOAT_MULT</td>
|
||||
@@ -376,9 +391,9 @@
|
||||
<td>Multiplication of v0 and v1 as floating-point numbers.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>FLOAT_SUB</td>
|
||||
<td><code class="code">v0 f- v1</code></td>
|
||||
<td>Subtraction of v1 from v0 as floating-point numbers.</td>
|
||||
<td>FLOAT_DIV</td>
|
||||
<td><code class="code">v0 f/ v1</code></td>
|
||||
<td>Division of v0 by v1 as floating-point numbers.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>FLOAT_NEG</td>
|
||||
@@ -395,21 +410,6 @@
|
||||
<td><code class="code">sqrt(v0)</code></td>
|
||||
<td>Square root of v0 as a floating-point number.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>INT2FLOAT</td>
|
||||
<td><code class="code">int2float(v0)</code></td>
|
||||
<td>Floating-point representation of v0 viewed as an integer.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>FLOAT2FLOAT</td>
|
||||
<td><code class="code">float2float(v0)</code></td>
|
||||
<td>Copy of floating-point number v0 with more or less precision.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>TRUNC</td>
|
||||
<td><code class="code">trunc(v0)</code></td>
|
||||
<td>Signed integer obtained by truncating v0 viewed as a floating-point number.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>FLOAT_CEIL</td>
|
||||
<td><code class="code">ceil(v0)</code></td>
|
||||
@@ -426,19 +426,24 @@
|
||||
<td>Nearest integral floating-point to v0, viewed as a floating-point number.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>SUBPIECE</td>
|
||||
<td><code class="code">v0:2</code></td>
|
||||
<td>The least signficant n bytes of v0.</td>
|
||||
<td>FLOAT_NAN</td>
|
||||
<td><code class="code">nan(v0)</code></td>
|
||||
<td>True if v0 is not a valid floating-point number (NaN).</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>SUBPIECE</td>
|
||||
<td><code class="code">v0(2)</code></td>
|
||||
<td>All but the least significant n bytes of v0.</td>
|
||||
<td>INT2FLOAT</td>
|
||||
<td><code class="code">int2float(v0)</code></td>
|
||||
<td>Floating-point representation of v0 viewed as an integer.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>PIECE</td>
|
||||
<td><code class="code"><na></code></td>
|
||||
<td>Concatenate two varnodes into a single varnode.</td>
|
||||
<td>FLOAT2FLOAT</td>
|
||||
<td><code class="code">float2float(v0)</code></td>
|
||||
<td>Copy of floating-point number v0 with more or less precision.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>TRUNC</td>
|
||||
<td><code class="code">trunc(v0)</code></td>
|
||||
<td>Signed integer obtained by truncating v0 viewed as a floating-point number.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>CPOOLREF</td>
|
||||
@@ -486,6 +491,16 @@
|
||||
<td><code class="code"><na></code></td>
|
||||
<td>Construct a pointer to a field from a pointer to a structure and an offset.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>INSERT</td>
|
||||
<td><code class="code"><na></code></td>
|
||||
<td>Insert a value as a bit-range into a varnode</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>EXTRACT</td>
|
||||
<td><code class="code"><na></code></td>
|
||||
<td>Extract a bit-range from a varnode</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div></div>
|
||||
|
||||
Reference in New Issue
Block a user