ia32-64/x86/bndmov.html
2025-07-08 02:23:29 -03:00

274 lines
19 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" xmlns:x86="http://www.felixcloutier.com/x86"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><link rel="stylesheet" type="text/css" href="style.css"></link><title>BNDMOV
— Move Bounds</title></head><body><header><nav><ul><li><a href='index.html'>Index</a></li><li>December 2023</li></ul></nav></header><h1>BNDMOV
— Move Bounds</h1>
<table>
<tr>
<th>Opcode/Instruction</th>
<th>Op/En</th>
<th>64/32 bit Mode Support</th>
<th>CPUID Feature Flag</th>
<th>Description</th></tr>
<tr>
<td>66 0F 1A /r BNDMOV bnd1, bnd2/m64</td>
<td>RM</td>
<td>N.E./V</td>
<td>MPX</td>
<td>Move lower and upper bound from bnd2/m64 to bound register bnd1.</td></tr>
<tr>
<td>66 0F 1A /r BNDMOV bnd1, bnd2/m128</td>
<td>RM</td>
<td>V/N.E.</td>
<td>MPX</td>
<td>Move lower and upper bound from bnd2/m128 to bound register bnd1.</td></tr>
<tr>
<td>66 0F 1B /r BNDMOV bnd1/m64, bnd2</td>
<td>MR</td>
<td>N.E./V</td>
<td>MPX</td>
<td>Move lower and upper bound from bnd2 to bnd1/m64.</td></tr>
<tr>
<td>66 0F 1B /r BNDMOV bnd1/m128, bnd2</td>
<td>MR</td>
<td>V/N.E.</td>
<td>MPX</td>
<td>Move lower and upper bound from bnd2 to bound register bnd1/m128.</td></tr></table>
<h2 id="instruction-operand-encoding">Instruction Operand Encoding<a class="anchor" href="#instruction-operand-encoding">
</a></h2>
<table>
<tr>
<th>Op/En</th>
<th>Operand 1</th>
<th>Operand 2</th>
<th>Operand 3</th></tr>
<tr>
<td>RM</td>
<td>ModRM:reg (w)</td>
<td>ModRM:r/m (r)</td>
<td>N/A</td></tr>
<tr>
<td>MR</td>
<td>ModRM:r/m (w)</td>
<td>ModRM:reg (r)</td>
<td>N/A</td></tr></table>
<h2 id="description">Description<a class="anchor" href="#description">
</a></h2>
<p>BNDMOV moves a pair of lower and upper bound values from the source operand (the second operand) to the destination (the first operand). Each operation is 128-bit move. The exceptions are same as the MOV instruction. The memory format for loading/store bounds in 64-bit mode is shown in <a href='bndmov.html#fig-3-5'>Figure 3-5</a>.</p>
<figure id="fig-3-5">
<svg style="width: 596.736pt; height: 219.527976pt" viewBox="50.84 0.0 502.28 187.93998">
<g xmlns="http://www.w3.org/2000/svg" style="stroke: none; fill: none">
<rect height="181.98" style="fill: rgb(0%, 0%, 0%)" width="0.48" x="53.34" y="0.47998000000001184"></rect>
<rect height="181.98" style="fill: rgb(0%, 0%, 0%)" width="0.47998" x="550.14" y="0.47998000000001184"></rect>
<rect height="0.47998" style="fill: rgb(0%, 0%, 0%)" width="497.28000000000003" x="53.34" y="0.0"></rect>
<rect height="0.48001000000000005" style="fill: rgb(0%, 0%, 0%)" width="497.28000000000003" x="53.34" y="182.45997"></rect>
<rect height="0.48001000000000005" style="fill: rgb(0%, 0%, 0%)" width="286.14" x="84.06" y="23.819970000000012"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.48001000000000005" x="369.72" y="24.059979999999996"></rect>
<rect height="0.47998" style="fill: rgb(0%, 0%, 0%)" width="286.14" x="83.82000000000001" y="37.31999999999999"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.48" x="83.82000000000001" y="23.819979999999987"></rect>
<rect height="0.24002" style="fill: rgb(0%, 0%, 0%)" width="0.48001000000000005" x="233.04" y="23.699959999999976"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.48001000000000005" x="233.04" y="23.93997999999999"></rect>
<rect height="13.5" style="fill: rgb(100%, 100%, 100%)" width="320.1" x="144.24" y="66.89997999999997"></rect>
<rect height="0.47998" style="fill: rgb(0%, 0%, 0%)" width="320.34000000000003" x="144.24" y="66.65999999999997"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.47998" x="464.1" y="66.89997999999997"></rect>
<rect height="0.47998" style="fill: rgb(0%, 0%, 0%)" width="320.34000000000003" x="144.0" y="80.15999999999997"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.48" x="144.0" y="66.65997999999996"></rect>
<rect height="0.24002" style="fill: rgb(0%, 0%, 0%)" width="0.48001000000000005" x="313.62" y="66.47996"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.48001000000000005" x="313.62" y="66.71997999999996"></rect>
<path d="M 433.26 61.67998 L 433.8 59.099980000000016 L 433.98 58.499979999999994 L 434.58 58.799980000000005 L 443.03999999999996 63.23998 L 444.53999999999996 64.01997999999998 L 442.8 64.13997999999998 L 433.26 64.85998000000001 L 432.59999999999997 64.91998000000001 L 432.71999999999997 64.25997999999998 L 433.2 63.89998000000003 L 442.74 63.17998 L 442.8 64.13997999999998 L 442.5 64.07997999999998 L 434.03999999999996 59.63997999999998 L 434.58 58.799980000000005 L 434.82 59.339980000000025 L 434.28 61.91998000000001" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
<path d="M 432.72 64.25997999999998 L 433.26000000000005 61.67998 L 434.28000000000003 61.91998000000001 L 433.74 64.49998" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
<path d="M 433.74 61.799980000000005 L 434.28000000000003 59.21998000000002 L 442.74 63.65998000000002 L 433.2 64.37997999999999" style="fill: rgb(0%, 0%, 0%); fill-rule: evenodd"></path>
<path d="M 346.20000000000005 43.37997999999999 L 345.96000000000004 43.31997999999999 L 345.84000000000003 43.799980000000005 L 346.08000000000004 43.85998000000001" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
<path d="M 433.26 61.43997999999999 L 433.5 61.499979999999994 L 433.38 61.97998000000001 L 433.14 61.91998000000001" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
<path d="M 346.20000000000005 43.37997999999999 L 346.08000000000004 43.85998000000001 L 433.14000000000004 61.91998000000001 L 433.26000000000005 61.43997999999999" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
<path d="M 284.64 59.45997999999997 L 285.18 56.87997999999999 L 285.36 56.279979999999966 L 285.96 56.57997999999998 L 294.41999999999996 61.019979999999975 L 295.91999999999996 61.79997999999995 L 294.18 61.91997999999995 L 284.64 62.63997999999998 L 283.97999999999996 62.69997999999998 L 284.09999999999997 62.03997999999996 L 284.58 61.67998 L 294.12 60.95997999999997 L 294.18 61.91997999999995 L 293.88 61.85997999999995 L 285.41999999999996 57.41997999999995 L 285.96 56.57997999999998 L 286.2 57.11998 L 285.65999999999997 59.69997999999998" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
<path d="M 284.1 62.03997999999996 L 284.64000000000004 59.45997999999997 L 285.66 59.69997999999998 L 285.12 62.279979999999966" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
<path d="M 285.12 59.57997999999998 L 285.66 56.999979999999994 L 294.12 61.43997999999999 L 284.58 62.15997999999996" style="fill: rgb(0%, 0%, 0%); fill-rule: evenodd"></path>
<path d="M 197.58 41.21998000000002 L 197.34 41.15998000000002 L 197.22 41.63998000000004 L 197.46 41.69998000000004" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
<path d="M 284.7 59.27998000000002 L 284.94 59.339980000000025 L 284.82 59.819980000000044 L 284.58 59.75998000000004" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
<path d="M 197.58 41.21998000000002 L 197.46 41.69998000000004 L 284.58000000000004 59.75998000000004 L 284.70000000000005 59.27998000000002" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
<rect height="13.5" style="fill: rgb(100%, 100%, 100%)" width="285.90000000000003" x="76.44" y="108.29998"></rect>
<rect height="0.48001000000000005" style="fill: rgb(0%, 0%, 0%)" width="286.14" x="76.44" y="108.05997000000002"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.47998" x="362.1" y="108.29998"></rect>
<rect height="0.48001000000000005" style="fill: rgb(0%, 0%, 0%)" width="286.14" x="76.2" y="121.55997000000002"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.48" x="76.2" y="108.05998"></rect>
<rect height="0.23999" style="fill: rgb(0%, 0%, 0%)" width="0.48" x="225.42000000000002" y="107.87999000000002"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.48" x="225.42000000000002" y="108.11998"></rect>
<rect height="13.5" style="fill: rgb(100%, 100%, 100%)" width="320.1" x="136.62" y="151.07998000000003"></rect>
<rect height="0.47998" style="fill: rgb(0%, 0%, 0%)" width="320.34000000000003" x="136.62" y="150.83999999999997"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.47998" x="456.48" y="151.07997999999998"></rect>
<rect height="0.48" style="fill: rgb(0%, 0%, 0%)" width="320.34000000000003" x="136.38" y="164.33998"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.48001000000000005" x="136.38" y="150.83998000000003"></rect>
<rect height="0.23999" style="fill: rgb(0%, 0%, 0%)" width="0.48001000000000005" x="306.06" y="150.71999"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.48001000000000005" x="306.06" y="150.95998000000003"></rect>
<path d="M 427.38 153.35998 L 428.4 150.89998000000003 L 428.7 150.29998 L 429.18 150.71998000000002 L 436.68 156.71998000000002 L 438.06 157.79998 L 436.32 157.61998 L 426.84 156.53998 L 426.12 156.41998 L 426.42 155.81998000000002 L 426.9 155.51998 L 436.38 156.59998000000002 L 436.32 157.61998 L 436.02 157.49998 L 428.52 151.49998 L 429.18 150.71998000000002 L 429.3 151.25997999999998 L 428.28 153.71998000000002" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
<path d="M 426.42 155.81998 L 427.38 153.35997999999998 L 428.28000000000003 153.71998 L 427.32 156.17998" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
<path d="M 427.8 153.53997999999999 L 428.82 151.07997999999998 L 436.32 157.07997999999998 L 426.84000000000003 155.99998" style="fill: rgb(0%, 0%, 0%); fill-rule: evenodd"></path>
<path d="M 342.12 118.07997999999998 L 341.94 118.01997999999998 L 341.76 118.43997999999999 L 341.94 118.49998" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
<path d="M 427.5 153.17998 L 427.68 153.23998 L 427.5 153.65998 L 427.32 153.59998" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
<path d="M 342.12 118.07997999999998 L 341.94 118.49998 L 427.32 153.59998 L 427.5 153.17997999999997" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
<path d="M 363.24 153.89998 L 363.78000000000003 151.31998 L 363.96000000000004 150.71998000000002 L 364.56 151.01997999999998 L 373.02 155.45998 L 374.52 156.23998 L 372.78000000000003 156.35998 L 363.24 157.07998 L 362.58 157.13998 L 362.7 156.47998 L 363.18 156.11998 L 372.72 155.39998 L 372.78000000000003 156.35998 L 372.48 156.29998 L 364.02 151.85998 L 364.56 151.01997999999998 L 364.8 151.55998 L 364.26 154.13998" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
<path d="M 362.70000000000005 156.47997999999998 L 363.24000000000007 153.89997999999997 L 364.26000000000005 154.13997999999998 L 363.72 156.71998" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
<path d="M 363.72 154.01998 L 364.26000000000005 151.43998 L 372.72 155.87998000000002 L 363.18 156.59998000000002" style="fill: rgb(0%, 0%, 0%); fill-rule: evenodd"></path>
<path d="M 192.06 118.49998 L 191.82 118.43997999999999 L 191.7 118.91998000000001 L 191.94 118.97998000000001" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
<path d="M 363.3 153.65998 L 363.54 153.71998 L 363.42 154.19997999999998 L 363.18 154.13997999999998" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
<path d="M 192.06 118.49998 L 191.94 118.97998000000001 L 363.18 154.13997999999998 L 363.3 153.65998" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
<rect height="0.24002" style="fill: rgb(0%, 0%, 0%)" width="0.48001000000000005" x="385.56" y="151.19995999999998"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.48001000000000005" x="385.56" y="151.43998"></rect>
<rect height="0.24002" style="fill: rgb(0%, 0%, 0%)" width="0.48001000000000005" x="224.04" y="151.67996"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.48001000000000005" x="224.04" y="151.91998"></rect>
<text lengthAdjust="spacingAndGlyphs" style="font-size: 8.04699072423972pt; fill: #000" textLength="110.37412605178969" x="395.93869273" y="30.74140924983385">BNDMOV to memory in 64-bit mode</text>
<text lengthAdjust="spacingAndGlyphs" style="font-size: 8.04699072423972pt; fill: #000" textLength="56.7711470999748" x="133.44" y="34.64140924983383">Upper Bound (UB)</text>
<text lengthAdjust="spacingAndGlyphs" style="font-size: 8.04699072423972pt; fill: #000" textLength="55.55452844997467" x="259.13923652" y="34.70140924983383">Lower Bound (LB)</text>
<text lengthAdjust="spacingAndGlyphs" style="font-size: 8.82699072423975pt; fill: #000" textLength="44.05975405589487" x="458.99932715" y="64.64140924983383">0 Byteoffset</text>
<text lengthAdjust="spacingAndGlyphs" style="font-size: 8.04699072423972pt; fill: #000" textLength="7.848181971789671" x="132.06" y="64.34140924983382">16</text>
<text lengthAdjust="spacingAndGlyphs" style="font-size: 8.046990724239715pt; fill: #000" textLength="4.009074231789668" x="306.0" y="64.40140924983382">8</text>
<text lengthAdjust="spacingAndGlyphs" style="font-size: 8.04699072423972pt; fill: #000" textLength="110.28677907178968" x="388.31838172000005" y="114.98140924983386">BNDMOV to memory in 32-bit mode</text>
<text lengthAdjust="spacingAndGlyphs" style="font-size: 8.04699072423972pt; fill: #000" textLength="56.7115293199747" x="125.82000000000001" y="118.82140924983383">Upper Bound (UB)</text>
<text lengthAdjust="spacingAndGlyphs" style="font-size: 8.04699072423972pt; fill: #000" textLength="55.567699819974706" x="251.51923652000002" y="118.88140924983384">Lower Bound (LB)</text>
<text lengthAdjust="spacingAndGlyphs" style="font-size: 8.886990724239752pt; fill: #000" textLength="44.065299895894725" x="451.37901614000003" y="148.88140924983384">0 Byteoffset</text>
<text lengthAdjust="spacingAndGlyphs" style="font-size: 8.04699072423972pt; fill: #000" textLength="7.848181971789671" x="124.5" y="148.52140924983382">16</text>
<text lengthAdjust="spacingAndGlyphs" style="font-size: 8.046990724239715pt; fill: #000" textLength="4.009074231789668" x="298.44" y="148.58140924983383">8</text>
<text lengthAdjust="spacingAndGlyphs" style="font-size: 8.046990724239715pt; fill: #000" textLength="4.009074231789668" x="379.44" y="148.58140924983383">4</text></g></svg>
<figcaption><a href='bndmov.html#fig-3-5'>Figure 3-5</a>. Memory Layout of BNDMOV to/from Memory</figcaption></figure>
<p>This instruction does not change flags.</p>
<h2 id="operation">Operation<a class="anchor" href="#operation">
</a></h2>
<h3 id="bndmov-register-to-register">BNDMOV register to register<a class="anchor" href="#bndmov-register-to-register">
</a></h3>
<pre>DEST.LB := SRC.LB;
DEST.UB := SRC.UB;
</pre>
<h3 id="bndmov-from-memory">BNDMOV from memory<a class="anchor" href="#bndmov-from-memory">
</a></h3>
<pre>IF 64-bit mode THEN
DEST.LB := LOAD_QWORD(SRC);
DEST.UB := LOAD_QWORD(SRC+8);
ELSE
DEST.LB := LOAD_DWORD_ZERO_EXT(SRC);
DEST.UB := LOAD_DWORD_ZERO_EXT(SRC+4);
FI;
</pre>
<h3 id="bndmov-to-memory">BNDMOV to memory<a class="anchor" href="#bndmov-to-memory">
</a></h3>
<pre>IF 64-bit mode THEN
DEST[63:0] := SRC.LB;
DEST[127:64] := SRC.UB;
ELSE
DEST[31:0] := SRC.LB;
DEST[63:32] := SRC.UB;
FI;
</pre>
<h2 id="intel-c-c++-compiler-intrinsic-equivalent">Intel C/C++ Compiler Intrinsic Equivalent<a class="anchor" href="#intel-c-c++-compiler-intrinsic-equivalent">
</a></h2>
<pre>BNDMOV void * _bnd_copy_ptr_bounds(const void *q, const void *r)
</pre>
<h2 id="flags-affected">Flags Affected<a class="anchor" href="#flags-affected">
</a></h2>
<p>None.</p>
<h2 class="exceptions" id="protected-mode-exceptions">Protected Mode Exceptions<a class="anchor" href="#protected-mode-exceptions">
</a></h2>
<table>
<tr>
<td rowspan="4">#UD</td>
<td>If the LOCK prefix is used but the destination is not a memory operand.</td></tr>
<tr>
<td>If ModRM.r/m encodes BND4-BND7 when Intel MPX is enabled.</td></tr>
<tr>
<td>If 67H prefix is not used and CS.D=0.</td></tr>
<tr>
<td>If 67H prefix is used and CS.D=1.</td></tr>
<tr>
<td>#SS(0)</td>
<td>If the memory operand effective address is outside the SS segment limit.</td></tr>
<tr>
<td rowspan="3">#GP(0)</td>
<td>If the memory operand effective address is outside the CS, DS, ES, FS, or GS segment limit.</td></tr>
<tr>
<td>If the destination operand points to a non-writable segment</td></tr>
<tr>
<td>If the DS, ES, FS, or GS segment register contains a NULL segment selector.</td></tr>
<tr>
<td>#AC(0)</td>
<td>If alignment checking is enabled and an unaligned memory reference is made while CPL is 3.</td></tr>
<tr>
<td>#PF(fault</td>
<td>code) If a page fault occurs.</td></tr></table>
<h2 class="exceptions" id="real-address-mode-exceptions">Real-Address Mode Exceptions<a class="anchor" href="#real-address-mode-exceptions">
</a></h2>
<table>
<tr>
<td rowspan="3">#UD</td>
<td>If the LOCK prefix is used but the destination is not a memory operand.</td></tr>
<tr>
<td>If ModRM.r/m encodes BND4-BND7 when Intel MPX is enabled.</td></tr>
<tr>
<td>If 16-bit addressing is used.</td></tr>
<tr>
<td>#GP(0)</td>
<td>If the memory operand effective address is outside the CS, DS, ES, FS, or GS segment limit.</td></tr>
<tr>
<td>#SS</td>
<td>If the memory operand effective address is outside the SS segment limit.</td></tr></table>
<h2 class="exceptions" id="virtual-8086-mode-exceptions">Virtual-8086 Mode Exceptions<a class="anchor" href="#virtual-8086-mode-exceptions">
</a></h2>
<table>
<tr>
<td rowspan="3">#UD</td>
<td>If the LOCK prefix is used but the destination is not a memory operand.</td></tr>
<tr>
<td>If ModRM.r/m encodes BND4-BND7 when Intel MPX is enabled.</td></tr>
<tr>
<td>If 16-bit addressing is used.</td></tr>
<tr>
<td>#GP(0)</td>
<td>If the memory operand effective address is outside the CS, DS, ES, FS, or GS segment limit.</td></tr>
<tr>
<td>#SS(0)</td>
<td>If the memory operand effective address is outside the SS segment limit.</td></tr>
<tr>
<td>#AC(0)</td>
<td>If alignment checking is enabled and an unaligned memory reference is made while CPL is 3.</td></tr>
<tr>
<td>#PF(fault</td>
<td>code) If a page fault occurs.</td></tr></table>
<h2 class="exceptions" id="compatibility-mode-exceptions">Compatibility Mode Exceptions<a class="anchor" href="#compatibility-mode-exceptions">
</a></h2>
<p>Same exceptions as in protected mode.</p>
<h2 class="exceptions" id="64-bit-mode-exceptions">64-Bit Mode Exceptions<a class="anchor" href="#64-bit-mode-exceptions">
</a></h2>
<table>
<tr>
<td rowspan="2">#UD</td>
<td>If the LOCK prefix is used but the destination is not a memory operand.</td></tr>
<tr>
<td>If ModRM.r/m and REX encodes BND4-BND15 when Intel MPX is enabled.</td></tr>
<tr>
<td>#SS(0)</td>
<td>If the memory address referencing the SS segment is in a non-canonical form.</td></tr>
<tr>
<td>#GP(0)</td>
<td>If the memory address is in a non-canonical form.</td></tr>
<tr>
<td>#AC(0)</td>
<td>If alignment checking is enabled and an unaligned memory reference is made while CPL is 3.</td></tr>
<tr>
<td>#PF(fault</td>
<td>code) If a page fault occurs.</td></tr></table><footer><p>
This UNOFFICIAL, mechanically-separated, non-verified reference is provided for convenience, but it may be
inc<span style="opacity: 0.2">omp</span>lete or b<sub>r</sub>oke<sub>n</sub> in various obvious or non-obvious
ways. Refer to <a href="https://software.intel.com/en-us/download/intel-64-and-ia-32-architectures-sdm-combined-volumes-1-2a-2b-2c-2d-3a-3b-3c-3d-and-4">Intel® 64 and IA-32 Architectures Software Developers Manual</a> for anything serious.
</p></footer></body></html>