summary refs log tree commit diff stats
path: root/compiler/cgmeth.nim
Commit message (Expand)AuthorAgeFilesLines
* Fixes #5946 (#6017)Yuriy Glukhov2017-06-261-2/+3
* fixes multiple nil-checks for methods (#5806)Parashurama2017-05-121-3/+6
* fixes #5599 (#5610)Andreas Rumpf2017-03-261-2/+8
* fixes #5432Araq2017-02-261-1/+2
* another attempt to make test green againAraq2017-02-241-2/+10
* fixes a multimethod regressionAndreas Rumpf2017-02-241-6/+9
* big compiler refactoring; avoid globals for multi method dispatcher generationAndreas Rumpf2017-02-221-24/+26
* removed tyArrayConstr completely from the compiler; introduced tyAlias instea...Araq2016-11-141-2/+2
* some progress on --symbolfiles:onAndreas Rumpf2016-11-021-2/+3
* tester cleanup; enable some rod testsAraq2016-08-271-2/+3
* generic multi-methods should work nowAndreas Rumpf2016-07-281-2/+2
* fixes #4428Andreas Rumpf2016-07-191-2/+8
* fix issue #3550trustable-code2015-12-241-4/+1
* better error handling for bug #3550Araq2015-11-181-2/+2
* fixes #3550Araq2015-11-181-1/+6
* fixes #3431, fixes #3370, fixes #3468Araq2015-10-251-3/+4
* Fixed ret by var in jsYuriy Glukhov2015-10-151-2/+1
* fixes #2590; methods now require a .base annotationAraq2015-09-061-9/+26
* compiler: Trim .nim files trailing whitespaceAdam Strzelecki2015-09-041-42/+42
* Merge branch 'devel' into bigbreakAraq2014-11-031-23/+64
|\
| * Fix dispatcher creation for method prototypes.Reimer Behrends2014-11-021-24/+64
| * Reset location when creating a method dispatcherReimer Behrends2014-11-011-0/+1
* | updated the compiler to use the new symbol namesAraq2014-08-281-3/+3
* | Nimrod renamed to NimAraq2014-08-281-1/+1
|/
* implemented region pointersAraq2014-04-091-2/+2
* 'nil' as a statement is deprecated, use an empty 'discard' insteadAraq2014-01-191-1/+1
* case consistency part 4Araq2013-12-271-8/+8
* case consistency part 1Araq2013-12-271-3/+3
* fixes #332Araq2013-03-171-2/+2
* Removes executable bit for text files.Grzegorz Adam Hankiewicz2013-03-161-0/+0
* implemented generic multi methodsAraq2013-01-161-10/+9
* next steps for exception trackingAraq2012-11-031-4/+7
* bugfix for methods (comment in #185)Araq2012-08-221-0/+3
* year 2012 for most copyright headersAraq2012-01-021-1/+1
* lazy loading of body ast implementedAraq2011-10-301-2/+2
* compilation cache: multi methods now workAraq2011-10-241-4/+18
* compilation cache: small fixes; methods still not workingAraq2011-10-231-13/+15
* preparation for new 'is' operator; breaks bootstrapping again, sorry (use gen...Araq2011-07-311-1/+1
* intsets are now a proper module and part of the stdlibAraq2011-06-141-6/+5
* fixes #12Araq2011-05-021-58/+43
* got rid of some arcane module namesAraq2011-04-211-1/+1
* big repo cleanupAraq2011-04-121-0/+196
id='n462' href='#n462'>462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Mu - linux/bootstrap/018jump_disp32.cc</title>
<meta name="Generator" content="Vim/8.2">
<meta name="plugin-version" content="vim8.1_v2">
<meta name="syntax" content="cpp">
<meta name="settings" content="number_lines,use_css,pre_wrap,no_foldcolumn,expand_tabs,line_ids,prevent_copy=,use_input_for_pc=fallback">
<meta name="colorscheme" content="minimal-light">
<style>
<!--
pre { white-space: pre-wrap; font-family: monospace; color: #000000; background-color: #ffffd7; }
body { font-size:12pt; font-family: monospace; color: #000000; background-color: #ffffd7; }
a { color:inherit; }
* { font-size:12pt; font-size: 1em; }
.cSpecial { color: #008000; }
.Normal { color: #000000; background-color: #ffffd7; padding-bottom: 1px; }
.LineNr { }
.Constant { color: #008787; }
.Comment { color: #005faf; }
.Delimiter { color: #c000c0; }
.Identifier { color: #af5f00; }
-->
</style>

<script>
<!--

/* function to open any folds containing a jumped-to line before jumping to it */
function JumpToLine()
{
  var lineNum;
  lineNum = window.location.hash;
  lineNum = lineNum.substr(1); /* strip off '#' */

  if (lineNum.indexOf('L') == -1) {
    lineNum = 'L'+lineNum;
  }
  var lineElem = document.getElementById(lineNum);
  /* Always jump to new location even if the line was hidden inside a fold, or
   * we corrected the raw number to a line ID.
   */
  if (lineElem) {
    lineElem.scrollIntoView(true);
  }
  return true;
}
if ('onhashchange' in window) {
  window.onhashchange = JumpToLine;
}

-->
</script>
</head>
<body onload='JumpToLine();'>
<a href='https://github.com/akkartik/mu/blob/main/linux/bootstrap/018jump_disp32.cc'>https://github.com/akkartik/mu/blob/main/linux/bootstrap/018jump_disp32.cc</a>
<pre id='vimCodeElement'>
<span id="L1" class="LineNr">  1 </span><span class="Comment">//: jump to 32-bit offset</span>
<span id="L2" class="LineNr">  2 </span>
<span id="L3" class="LineNr">  3 </span><span class="Comment">//:: jump</span>
<span id="L4" class="LineNr">  4 </span>
<span id="L5" class="LineNr">  5 </span><span class="Delimiter">:(before &quot;End Initialize Op Names&quot;)</span>
<span id="L6" class="LineNr">  6 </span><a href='001help.cc.html#L237'>put_new</a><span class="Delimiter">(</span><a href='010vm.cc.html#L355'>Name</a><span class="Delimiter">,</span> <span class="Constant">&quot;e9&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;jump <a href='040tests.cc.html#L82'>disp32</a> bytes away (jmp)&quot;</span><span class="Delimiter">);</span>
<span id="L7" class="LineNr">  7 </span>
<span id="L8" class="LineNr">  8 </span><span class="Delimiter">:(code)</span>
<span id="L9" class="LineNr">  9 </span><span class="Normal">void</span> <a href='018jump_disp32.cc.html#L9'>test_jump_disp32</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
<span id="L10" class="LineNr"> 10 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
<span id="L11" class="LineNr"> 11 </span>      <span class="Constant">&quot;== code 0x1</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
<span id="L12" class="LineNr"> 12 </span>      <span class="Comment">// op     ModR/M  SIB   displacement  immediate</span>
<span id="L13" class="LineNr"> 13 </span>      <span class="Constant">&quot;  e9                   05 00 00 00               </span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>  <span class="Comment">// skip 1 instruction</span>
<span id="L14" class="LineNr"> 14 </span>      <span class="Constant">&quot;  05                                 00 00 00 01 </span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
<span id="L15" class="LineNr"> 15 </span>      <span class="Constant">&quot;  05                                 00 00 00 02 </span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
<span id="L16" class="LineNr"> 16 </span>  <span class="Delimiter">);</span>
<span id="L17" class="LineNr"> 17 </span>  <a href='003trace.cc.html#L290'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
<span id="L18" class="LineNr"> 18 </span>      <span class="Constant">&quot;run: 0x00000001 opcode: e9</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
<span id="L19" class="LineNr"> 19 </span>      <span class="Constant">&quot;run: jump 5</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
<span id="L20" class="LineNr"> 20 </span>      <span class="Constant">&quot;run: 0x0000000b opcode: 05</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
<span id="L21" class="LineNr"> 21 </span>  <span class="Delimiter">);</span>
<span id="L22" class="LineNr"> 22 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_DOESNT_CONTAIN</a><span class="Delimiter">(</span><span class="Constant">&quot;run: 0x00000006 opcode: 05&quot;</span><span class="Delimiter">);</span>
<span id="L23" class="LineNr"> 23 </span><span class="Delimiter">}</span>
<span id="L24" class="LineNr"> 24 </span>
<span id="L25" class="LineNr"> 25 </span><span class="Delimiter">:(before &quot;End Single-Byte Opcodes&quot;)</span>
<span id="L26" class="LineNr"> 26 </span><span class="Normal">case</span> <span class="Constant">0xe9</span>: <span class="Delimiter">{</span>  <span class="Comment">// jump disp32</span>
<span id="L27" class="LineNr"> 27 </span>  <span class="Normal">const</span> <span class="Normal">int32_t</span> offset = <a href='011run.cc.html#L433'>next32</a><span class="Delimiter">();</span>
<span id="L28" class="LineNr"> 28 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span>Callstack_depth+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;jump &quot;</span> &lt;&lt; offset &lt;&lt; end<span class="Delimiter">();</span>
<span id="L29" class="LineNr"> 29 </span>  <a href='010vm.cc.html#L26'>EIP</a> += offset<span class="Delimiter">;</span>
<span id="L30" class="LineNr"> 30 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
<span id="L31" class="LineNr"> 31 </span><span class="Delimiter">}</span>
<span id="L32" class="LineNr"> 32 </span>
<span id="L33" class="LineNr"> 33 </span><span class="Comment">//:: jump if equal/zero</span>
<span id="L34" class="LineNr"> 34 </span>
<span id="L35" class="LineNr"> 35 </span><span class="Delimiter">:(before &quot;End Initialize Op Names&quot;)</span>
<span id="L36" class="LineNr"> 36 </span><a href='001help.cc.html#L237'>put_new</a><span class="Delimiter">(</span><a href='010vm.cc.html#L356'>Name_0f</a><span class="Delimiter">,</span> <span class="Constant">&quot;84&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;jump <a href='040tests.cc.html#L82'>disp32</a> bytes away if equal, if <a href='010vm.cc.html#L89'>ZF</a> is set (jcc/jz/je)&quot;</span><span class="Delimiter">);</span>
<span id="L37" class="LineNr"> 37 </span>
<span id="L38" class="LineNr"> 38 </span><span class="Delimiter">:(code)</span>
<span id="L39" class="LineNr"> 39 </span><span class="Normal">void</span> <a href='018jump_disp32.cc.html#L39'>test_je_disp32_success</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
<span id="L40" class="LineNr"> 40 </span>  <a href='010vm.cc.html#L89'>ZF</a> = <span class="Constant">true</span><span class="Delimiter">;</span>
<span id="L41" class="LineNr"> 41 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
<span id="L42" class="LineNr"> 42 </span>      <span class="Constant">&quot;== code 0x1</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
<span id="L43" class="LineNr"> 43 </span>      <span class="Comment">// op     ModR/M  SIB   displacement  immediate</span>
<span id="L44" class="LineNr"> 44 </span>      <span class="Constant">&quot;  0f 84                05 00 00 00               </span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>  <span class="Comment">// skip 1 instruction</span>
<span id="L45" class="LineNr"> 45 </span>      <span class="Constant">&quot;  05                                 00 00 00 01 </span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
<span id="L46" class="LineNr"> 46 </span>      <span class="Constant">&quot;  05                                 00 00 00 02 </span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
<span id="L47" class="LineNr"> 47 </span>  <span class="Delimiter">);</span>
<span id="L48" class="LineNr"> 48 </span>  <a href='003trace.cc.html#L290'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
<span id="L49" class="LineNr"> 49 </span>      <span class="Constant">&quot;run: 0x00000001 opcode: 0f</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
<span id="L50" class="LineNr"> 50 </span>      <span class="Constant">&quot;run: jump 5</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
<span id="L51" class="LineNr"> 51 </span>      <span class="Constant">&quot;run: 0x0000000c opcode: 05</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
<span id="L52" class="LineNr"> 52 </span>  <span class="Delimiter">);</span>
<span id="L53" class="LineNr"> 53 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_DOESNT_CONTAIN</a><span class="Delimiter">(</span><span class="Constant">&quot;run: 0x00000007 opcode: 05&quot;</span><span class="Delimiter">);</span>
<span id="L54" class="LineNr"> 54 </span><span class="Delimiter">}</span>
<span id="L55" class="LineNr"> 55 </span>
<span id="L56" class="LineNr"> 56 </span><span class="Delimiter">:(before &quot;End Two-Byte Opcodes Starting With 0f&quot;)</span>
<span id="L57" class="LineNr"> 57 </span><span class="Normal">case</span> <span class="Constant">0x84</span>: <span class="Delimiter">{</span>  <span class="Comment">// jump disp32 if ZF</span>
<span id="L58" class="LineNr"> 58 </span>  <span class="Normal">const</span> <span class="Normal">int32_t</span> offset = <a href='011run.cc.html#L433'>next32</a><span class="Delimiter">();</span>
<span id="L59" class="LineNr"> 59 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='010vm.cc.html#L89'>ZF</a><span class="Delimiter">)</span> <span class="Delimiter">{</span>
<span id="L60" class="LineNr"> 60 </span>    <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span>Callstack_depth+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;jump &quot;</span> &lt;&lt; offset &lt;&lt; end<span class="Delimiter">();</span>
<span id="L61" class="LineNr"> 61 </span>    <a href='010vm.cc.html#L26'>EIP</a> += offset<span class="Delimiter">;</span>
<span id="L62" class="LineNr"> 62 </span>  <span class="Delimiter">}</span>
<span id="L63" class="LineNr"> 63 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
<span id="L64" class="LineNr"> 64 </span><span class="Delimiter">}</span>
<span id="L65" class="LineNr"> 65 </span>
<span id="L66" class="LineNr"> 66 </span><span class="Delimiter">:(code)</span>
<span id="L67" class="LineNr"> 67 </span><span class="Normal">void</span> <a href='018jump_disp32.cc.html#L67'>test_je_disp32_fail</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
<span id="L68" class="LineNr"> 68 </span>  <a href='010vm.cc.html#L89'>ZF</a> = <span class="Constant">false</span><span class="Delimiter">;</span>
<span id="L69" class="LineNr"> 69 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
<span id="L70" class="LineNr"> 70 </span>      <span class="Constant">&quot;== code 0x1</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
<span id="L71" class="LineNr"> 71 </span>      <span class="Comment">// op     ModR/M  SIB   displacement  immediate</span>
<span id="L72" class="LineNr"> 72 </span>      <span class="Constant">&quot;  0f 84                05 00 00 00               </span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>  <span class="Comment">// skip 1 instruction</span>
<span id="L73" class="LineNr"> 73 </span>      <span class="Constant">&quot;  05                                 00 00 00 01 </span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
<span id="L74" class="LineNr"> 74 </span>      <span class="Constant">&quot;  05                                 00 00 00 02 </span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
<span id="L75" class="LineNr"> 75 </span>  <span class="Delimiter">);</span>
<span id="L76" class="LineNr"> 76 </span>  <a href='003trace.cc.html#L290'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
<span id="L77" class="LineNr"> 77 </span>      <span class="Constant">&quot;run: 0x00000001 opcode: 0f</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
<span id="L78" class="LineNr"> 78 </span>      <span class="Constant">&quot;run: 0x00000007 opcode: 05</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
<span id="L79" class="LineNr"> 79 </span>      <span class="Constant">&quot;run: 0x0000000c opcode: 05</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
<span id="L80" class="LineNr"> 80 </span>  <span class="Delimiter">);</span>
<span id="L81" class="LineNr"> 81 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_DOESNT_CONTAIN</a><span class="Delimiter">(</span><span class="Constant">&quot;run: jump 5&quot;</span><span class="Delimiter">);</span>
<span id="L82" class="LineNr"> 82 </span><span class="Delimiter">}</span>
<span id="L83" class="LineNr"> 83 </span>
<span id="L84" class="LineNr"> 84 </span><span class="Comment">//:: jump if not equal/not zero</span>
<span id="L85" class="LineNr"> 85 </span>
<span id="L86" class="LineNr"> 86 </span><span class="Delimiter">:(before &quot;End Initialize Op Names&quot;)</span>
<span id="L87" class="LineNr"> 87 </span><a href='001help.cc.html#L237'>put_new</a><span class="Delimiter">(</span><a href='010vm.cc.html#L356'>Name_0f</a><span class="Delimiter">,</span> <span class="Constant">&quot;85&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;jump <a href='040tests.cc.html#L82'>disp32</a> bytes away if not equal, if <a href='010vm.cc.html#L89'>ZF</a> is not set (jcc/jnz/jne)&quot;</span><span class="Delimiter">);</span>
<span id="L88" class="LineNr"> 88 </span>
<span id="L89" class="LineNr"> 89 </span><span class="Delimiter">:(code)</span>
<span id="L90" class="LineNr"> 90 </span><span class="Normal">void</span> <a href='018jump_disp32.cc.html#L90'>test_jne_disp32_success</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
<span id="L91" class="LineNr"> 91 </span>  <a href='010vm.cc.html#L89'>ZF</a> = <span class="Constant">false</span><span class="Delimiter">;</span>
<span id="L92" class="LineNr"> 92 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
<span id="L93" class="LineNr"> 93 </span>      <span class="Constant">&quot;== code 0x1</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
<span id="L94" class="LineNr"> 94 </span>      <span class="Comment">// op     ModR/M  SIB   displacement  immediate</span>
<span id="L95" class="LineNr"> 95 </span>      <span class="Constant">&quot;  0f 85                05 00 00 00               </span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>  <span class="Comment">// skip 1 instruction</span>
<span id="L96" class="LineNr"> 96 </span>      <span class="Constant">&quot;  05                                 00 00 00 01 </span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
<span id="L97" class="LineNr"> 97 </span>      <span class="Constant">&quot;  05                                 00 00 00 02 </span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
<span id="L98" class="LineNr"> 98 </span>  <span class="Delimiter">);</span>
<span id="L99" class="LineNr"> 99 </span>  <a href='003trace.cc.html#L290'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
<span id="L100" class="LineNr">100 </span>      <span class="Constant">&quot;run: 0x00000001 opcode: 0f</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
<span id="L101" class="LineNr">101 </span>      <span class="Constant">&quot;run: jump 5</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
<span id="L102" class="LineNr">102 </span>      <span class="Constant">&quot;run: 0x0000000c opcode: 05</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
<span id="L103" class="LineNr">103 </span>  <span class="Delimiter">);</span>
<span id="L104" class="LineNr">104 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_DOESNT_CONTAIN</a><span class="Delimiter">(</span><span class="Constant">&quot;run: 0x00000007 opcode: 05&quot;</span><span class="Delimiter">);</span>
<span id="L105" class="LineNr">105 </span><span class="Delimiter">}</span>
<span id="L106" class="LineNr">106 </span>
<span id="L107" class="LineNr">107 </span><span class="Delimiter">:(before &quot;End Two-Byte Opcodes Starting With 0f&quot;)</span>
<span id="L108" class="LineNr">108 </span><span class="Normal">case</span> <span class="Constant">0x85</span>: <span class="Delimiter">{</span>  <span class="Comment">// jump disp32 if !ZF</span>
<span id="L109" class="LineNr">109 </span>  <span class="Normal">const</span> <span class="Normal">int32_t</span> offset = <a href='011run.cc.html#L433'>next32</a><span class="Delimiter">();</span>
<span id="L110" class="LineNr">110 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!ZF<span class="Delimiter">)</span> <span class="Delimiter">{</span>
<span id="L111" class="LineNr">111 </span>    <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span>Callstack_depth+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;jump &quot;</span> &lt;&lt; offset &lt;&lt; end<span class="Delimiter">();</span>
<span id="L112" class="LineNr">112 </span>    <a href='010vm.cc.html#L26'>EIP</a> += offset<span class="Delimiter">;</span>
<span id="L113" class="LineNr">113 </span>  <span class="Delimiter">}</span>
<span id="L114" class="LineNr">114 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
<span id="L115" class="LineNr">115 </span><span class="Delimiter">}</span>
<span id="L116" class="LineNr">116 </span>
<span id="L117" class="LineNr">117 </span><span class="Delimiter">:(code)</span>
<span id="L118" class="LineNr">118 </span><span class="Normal">void</span> <a href='018jump_disp32.cc.html#L118'>test_jne_disp32_fail</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
<span id="L119" class="LineNr">119 </span>  <a href='010vm.cc.html#L89'>ZF</a> = <span class="Constant">true</span><span class="Delimiter">;</span>
<span id="L120" class="LineNr">120 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
<span id="L121" class="LineNr">121 </span>      <span class="Constant">&quot;== code 0x1</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
<span id="L122" class="LineNr">122 </span>      <span class="Comment">// op     ModR/M  SIB   displacement  immediate</span>
<span id="L123" class="LineNr">123 </span>      <span class="Constant">&quot;  0f 85                05 00 00 00               </span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>  <span class="Comment">// skip 1 instruction</span>
<span id="L124" class="LineNr">124 </span>      <span class="Constant">&quot;  05                                 00 00 00 01 </span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
<span id="L125" class="LineNr">125 </span>      <span class="Constant">&quot;  05                                 00 00 00 02 </span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
<span id="L126" class="LineNr">126 </span>  <span class="Delimiter">);</span>
<span id="L127" class="LineNr">127 </span>  <a href='003trace.cc.html#L290'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
<span id="L128" class="LineNr">128 </span>      <span class="Constant">&quot;run: 0x00000001 opcode: 0f</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
<span id="L129" class="LineNr">129 </span>      <span class="Constant">&quot;run: 0x00000007 opcode: 05</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
<span id="L130" class="LineNr">130 </span>      <span class="Constant">&quot;run: 0x0000000c opcode: 05</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
<span id="L131" class="LineNr">131 </span>  <span class="Delimiter">);</span>
<span id="L132" class="LineNr">132 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_DOESNT_CONTAIN</a><span class="Delimiter">(</span><span class="Constant">&quot;run: jump 5&quot;</span><span class="Delimiter">);</span>
<span id="L133" class="LineNr">133 </span><span class="Delimiter">}</span>
<span id="L134" class="LineNr">134 </span>
<span id="L135" class="LineNr">135 </span><span class="Comment">//:: jump if greater</span>
<span id="L136" class="LineNr">136 </span>
<span id="L137" class="LineNr">137 </span><span class="Delimiter">:(before &quot;End Initialize Op Names&quot;)</span>
<span id="L138" class="LineNr">138 </span><a href='001help.cc.html#L237'>put_new</a><span class="Delimiter">(</span><a href='010vm.cc.html#L356'>Name_0f</a><span class="Delimiter">,</span> <span class="Constant">&quot;8f&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;jump <a href='040tests.cc.html#L82'>disp32</a> bytes away if greater, if <a href='010vm.cc.html#L89'>ZF</a> is unset and SF == <a href='010vm.cc.html#L91'>OF</a> (jcc/jg/jnle)&quot;</span><span class="Delimiter">);</span>
<span id="L139" class="LineNr">139 </span><a href='001help.cc.html#L237'>put_new</a><span class="Delimiter">(</span><a href='010vm.cc.html#L356'>Name_0f</a><span class="Delimiter">,</span> <span class="Constant">&quot;87&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;jump <a href='040tests.cc.html#L82'>disp32</a> bytes away if greater (addr, float), if <a href='010vm.cc.html#L89'>ZF</a> is unset and <a href='010vm.cc.html#L90'>CF</a> is unset (jcc/ja/jnbe)&quot;</span><span class="Delimiter">);</span>
<span id="L140" class="LineNr">140 </span>
<span id="L141" class="LineNr">141 </span><span class="Delimiter">:(code)</span>
<span id="L142" class="LineNr">142 </span><span class="Normal">void</span> <a href='018jump_disp32.cc.html#L142'>test_jg_disp32_success</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
<span id="L143" class="LineNr">143 </span>  <a href='010vm.cc.html#L89'>ZF</a> = <span class="Constant">false</span><span class="Delimiter">;</span>
<span id="L144" class="LineNr">144 </span>  SF = <span class="Constant">false</span><span class="Delimiter">;</span>
<span id="L145" class="LineNr">145 </span>  <a href='010vm.cc.html#L91'>OF</a> = <span class="Constant">false</span><span class="Delimiter">;</span>
<span id="L146" class="LineNr">146 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
<span id="L147" class="LineNr">147 </span>      <span class="Constant">&quot;== code 0x1</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
<span id="L148" class="LineNr">148 </span>      <span class="Comment">// op     ModR/M  SIB   displacement  immediate</span>
<span id="L149" class="LineNr">149 </span>      <span class="Constant">&quot;  0f 8f                05 00 00 00               </span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>  <span class="Comment">// skip 1 instruction</span>
<span id="L150" class="LineNr">150 </span>      <span class="Constant">&quot;  05                                 00 00 00 01 </span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
<span id="L151" class="LineNr">151 </span>      <span class="Constant">&quot;  05                                 00 00 00 02 </span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
<span id="L152" class="LineNr">152 </span>  <span class="Delimiter">);</span>
<span id="L153" class="LineNr">153 </span>  <a href='003trace.cc.html#L290'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
<span id="L154" class="LineNr">154 </span>      <span class="Constant">&quot;run: 0x00000001 opcode: 0f</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
<span id="L155" class="LineNr">155 </span>      <span class="Constant">&quot;run: jump 5</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
<span id="L156" class="LineNr">156 </span>      <span class="Constant">&quot;run: 0x0000000c opcode: 05</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
<span id="L157" class="LineNr">157 </span>  <span class="Delimiter">);</span>
<span id="L158" class="LineNr">158 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_DOESNT_CONTAIN</a><span class="Delimiter">(</span><span class="Constant">&quot;run: 0x00000007 opcode: 05&quot;</span><span class="Delimiter">);</span>
<span id="L159" class="LineNr">159 </span><span class="Delimiter">}</span>
<span id="L160" class="LineNr">160 </span>
<span id="L161" class="LineNr">161 </span><span class="Delimiter">:(before &quot;End Two-Byte Opcodes Starting With 0f&quot;)</span>
<span id="L162" class="LineNr">162 </span><span class="Normal">case</span> <span class="Constant">0x8f</span>: <span class="Delimiter">{</span>  <span class="Comment">// jump disp32 if !SF and !ZF</span>
<span id="L163" class="LineNr">163 </span>  <span class="Normal">const</span> <span class="Normal">int32_t</span> offset = <a href='011run.cc.html#L433'>next32</a><span class="Delimiter">();</span>
<span id="L164" class="LineNr">164 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!ZF &amp;&amp; SF == <a href='010vm.cc.html#L91'>OF</a><span class="Delimiter">)</span> <span class="Delimiter">{</span>
<span id="L165" class="LineNr">165 </span>    <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span>Callstack_depth+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;jump &quot;</span> &lt;&lt; offset &lt;&lt; end<span class="Delimiter">();</span>
<span id="L166" class="LineNr">166 </span>    <a href='010vm.cc.html#L26'>EIP</a> += offset<span class="Delimiter">;</span>
<span id="L167" class="LineNr">167 </span>  <span class="Delimiter">}</span>
<span id="L168" class="LineNr">168 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
<span id="L169" class="LineNr">169 </span><span class="Delimiter">}</span>
<span id="L170" class="LineNr">170 </span><span class="Normal">case</span> <span class="Constant">0x87</span>: <span class="Delimiter">{</span>  <span class="Comment">// jump disp32 if !CF and !ZF</span>
<span id="L171" class="LineNr">171 </span>  <span class="Normal">const</span> <span class="Normal">int32_t</span> offset = <a href='011run.cc.html#L433'>next32</a><span class="Delimiter">();</span>
<span id="L172" class="LineNr">172 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!CF &amp;&amp; !ZF<span class="Delimiter">)</span> <span class="Delimiter">{</span>
<span id="L173" class="LineNr">173 </span>    <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span>Callstack_depth+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;jump &quot;</span> &lt;&lt; offset &lt;&lt; end<span class="Delimiter">();</span>
<span id="L174" class="LineNr">174 </span>    <a href='010vm.cc.html#L26'>EIP</a> += offset<span class="Delimiter">;</span>
<span id="L175" class="LineNr">175 </span>  <span class="Delimiter">}</span>
<span id="L176" class="LineNr">176 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
<span id="L177" class="LineNr">177 </span><span class="Delimiter">}</span>
<span id="L178" class="LineNr">178 </span>
<span id="L179" class="LineNr">179 </span><span class="Delimiter">:(code)</span>
<span id="L180" class="LineNr">180 </span><span class="Normal">void</span> <a href='018jump_disp32.cc.html#L180'>test_jg_disp32_fail</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
<span id="L181" class="LineNr">181 </span>  <a href='010vm.cc.html#L89'>ZF</a> = <span class="Constant">false</span><span class="Delimiter">;</span>
<span id="L182" class="LineNr">182 </span>  SF = <span class="Constant">true</span><span class="Delimiter">;</span>
<span id="L183" class="LineNr">183 </span>  <a href='010vm.cc.html#L91'>OF</a> = <span class="Constant">false</span><span class="Delimiter">;</span>
<span id="L184" class="LineNr">184 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
<span id="L185" class="LineNr">185 </span>      <span class="Constant">&quot;== code 0x1</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
<span id="L186" class="LineNr">186 </span>      <span class="Comment">// op     ModR/M  SIB   displacement  immediate</span>
<span id="L187" class="LineNr">187 </span>      <span class="Constant">&quot;  0f 8f                05 00 00 00               </span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>  <span class="Comment">// skip 1 instruction</span>
<span id="L188" class="LineNr">188 </span>      <span class="Constant">&quot;  05                                 00 00 00 01 </span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
<span id="L189" class="LineNr">189 </span>      <span class="Constant">&quot;  05                                 00 00 00 02 </span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
<span id="L190" class="LineNr">190 </span>  <span class="Delimiter">);</span>
<span id="L191" class="LineNr">191 </span>  <a href='003trace.cc.html#L290'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
<span id="L192" class="LineNr">192 </span>      <span class="Constant">&quot;run: 0x00000001 opcode: 0f</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
<span id="L193" class="LineNr">193 </span>      <span class="Constant">&quot;run: 0x00000007 opcode: 05</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
<span id="L194" class="LineNr">194 </span>      <span class="Constant">&quot;run: 0x0000000c opcode: 05</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
<span id="L195" class="LineNr">195 </span>  <span class="Delimiter">);</span>
<span id="L196" class="LineNr">196 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_DOESNT_CONTAIN</a><span class="Delimiter">(</span><span class="Constant">&quot;run: jump 5&quot;</span><span class="Delimiter">);</span>
<span id="L197" class="LineNr">197 </span><span class="Delimiter">}</span>
<span id="L198" class="LineNr">198 </span>
<span id="L199" class="LineNr">199 </span><span class="Comment">//:: jump if greater or equal</span>
<span id="L200" class="LineNr">200 </span>
<span id="L201" class="LineNr">201 </span><span class="Delimiter">:(before &quot;End Initialize Op Names&quot;)</span>
<span id="L202" class="LineNr">202 </span><a href='001help.cc.html#L237'>put_new</a><span class="Delimiter">(</span><a href='010vm.cc.html#L356'>Name_0f</a><span class="Delimiter">,</span> <span class="Constant">&quot;8d&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;jump <a href='040tests.cc.html#L82'>disp32</a> bytes away if greater or equal, if SF == <a href='010vm.cc.html#L91'>OF</a> (jcc/jge/jnl)&quot;</span><span class="Delimiter">);</span>
<span id="L203" class="LineNr">203 </span><a href='001help.cc.html#L237'>put_new</a><span class="Delimiter">(</span><a href='010vm.cc.html#L356'>Name_0f</a><span class="Delimiter">,</span> <span class="Constant">&quot;83&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;jump <a href='040tests.cc.html#L82'>disp32</a> bytes away if greater or equal (addr, float), if <a href='010vm.cc.html#L90'>CF</a> is unset (jcc/jae/jnb)&quot;</span><span class="Delimiter">);</span>
<span id="L204" class="LineNr">204 </span>
<span id="L205" class="LineNr">205 </span><span class="Delimiter">:(code)</span>
<span id="L206" class="LineNr">206 </span><span class="Normal">void</span> <a href='018jump_disp32.cc.html#L206'>test_jge_disp32_success</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
<span id="L207" class="LineNr">207 </span>  SF = <span class="Constant">false</span><span class="Delimiter">;</span>
<span id="L208" class="LineNr">208 </span>  <a href='010vm.cc.html#L91'>OF</a> = <span class="Constant">false</span><span class="Delimiter">;</span>
<span id="L209" class="LineNr">209 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
<span id="L210" class="LineNr">210 </span>      <span class="Constant">&quot;== code 0x1</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
<span id="L211" class="LineNr">211 </span>      <span class="Comment">// op     ModR/M  SIB   displacement  immediate</span>
<span id="L212" class="LineNr">212 </span>      <span class="Constant">&quot;  0f 8d                05 00 00 00               </span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>  <span class="Comment">// skip 1 instruction</span>
<span id="L213" class="LineNr">213 </span>      <span class="Constant">&quot;  05                                 00 00 00 01 </span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
<span id="L214" class="LineNr">214 </span>      <span class="Constant">&quot;  05                                 00 00 00 02 </span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
<span id="L215" class="LineNr">215 </span>  <span class="Delimiter">);</span>
<span id="L216" class="LineNr">216 </span>  <a href='003trace.cc.html#L290'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
<span id="L217" class="LineNr">217 </span>      <span class="Constant">&quot;run: 0x00000001 opcode: 0f</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
<span id="L218" class="LineNr">218 </span>      <span class="Constant">&quot;run: jump 5</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
<span id="L219" class="LineNr">219 </span>      <span class="Constant">&quot;run: 0x0000000c opcode: 05</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
<span id="L220" class="LineNr">220 </span>  <span class="Delimiter">);</span>
<span id="L221" class="LineNr">221 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_DOESNT_CONTAIN</a><span class="Delimiter">(</span><span class="Constant">&quot;run: 0x00000007 opcode: 05&quot;</span><span class="Delimiter">);</span>
<span id="L222" class="LineNr">222 </span><span class="Delimiter">}</span>
<span id="L223" class="LineNr">223 </span>
<span id="L224" class="LineNr">224 </span><span class="Delimiter">:(before &quot;End Two-Byte Opcodes Starting With 0f&quot;)</span>
<span id="L225" class="LineNr">225 </span><span class="Normal">case</span> <span class="Constant">0x8d</span>: <span class="Delimiter">{</span>  <span class="Comment">// jump disp32 if !SF</span>
<span id="L226" class="LineNr">226 </span>  <span class="Normal">const</span> <span class="Normal">int32_t</span> offset = <a href='011run.cc.html#L433'>next32</a><span class="Delimiter">();</span>
<span id="L227" class="LineNr">227 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>SF == <a href='010vm.cc.html#L91'>OF</a><span class="Delimiter">)</span> <span class="Delimiter">{</span>
<span id="L228" class="LineNr">228 </span>    <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span>Callstack_depth+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;jump &quot;</span> &lt;&lt; offset &lt;&lt; end<span class="Delimiter">();</span>
<span id="L229" class="LineNr">229 </span>    <a href='010vm.cc.html#L26'>EIP</a> += offset<span class="Delimiter">;</span>
<span id="L230" class="LineNr">230 </span>  <span class="Delimiter">}</span>
<span id="L231" class="LineNr">231 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
<span id="L232" class="LineNr">232 </span><span class="Delimiter">}</span>
<span id="L233" class="LineNr">233 </span><span class="Normal">case</span> <span class="Constant">0x83</span>: <span class="Delimiter">{</span>  <span class="Comment">// jump disp32 if !CF</span>
<span id="L234" class="LineNr">234 </span>  <span class="Normal">const</span> <span class="Normal">int32_t</span> offset = <a href='011run.cc.html#L433'>next32</a><span class="Delimiter">();</span>
<span id="L235" class="LineNr">235 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!CF<span class="Delimiter">)</span> <span class="Delimiter">{</span>
<span id="L236" class="LineNr">236 </span>    <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span>Callstack_depth+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;jump &quot;</span> &lt;&lt; offset &lt;&lt; end<span class="Delimiter">();</span>
<span id="L237" class="LineNr">237 </span>    <a href='010vm.cc.html#L26'>EIP</a> += offset<span class="Delimiter">;</span>
<span id="L238" class="LineNr">238 </span>  <span class="Delimiter">}</span>
<span id="L239" class="LineNr">239 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
<span id="L240" class="LineNr">240 </span><span class="Delimiter">}</span>
<span id="L241" class="LineNr">241 </span>
<span id="L242" class="LineNr">242 </span><span class="Delimiter">:(code)</span>
<span id="L243" class="LineNr">243 </span><span class="Normal">void</span> <a href='018jump_disp32.cc.html#L243'>test_jge_disp32_fail</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
<span id="L244" class="LineNr">244 </span>  SF = <span class="Constant">true</span><span class="Delimiter">;</span>
<span id="L245" class="LineNr">245 </span>  <a href='010vm.cc.html#L91'>OF</a> = <span class="Constant">false</span><span class="Delimiter">;</span>
<span id="L246" class="LineNr">246 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
<span id="L247" class="LineNr">247 </span>      <span class="Constant">&quot;== code 0x1</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
<span id="L248" class="LineNr">248 </span>      <span class="Comment">// op     ModR/M  SIB   displacement  immediate</span>
<span id="L249" class="LineNr">249 </span>      <span class="Constant">&quot;  0f 8d                05 00 00 00               </span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>  <span class="Comment">// skip 1 instruction</span>
<span id="L250" class="LineNr">250 </span>      <span class="Constant">&quot;  05                                 00 00 00 01 </span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
<span id="L251" class="LineNr">251 </span>      <span class="Constant">&quot;  05                                 00 00 00 02 </span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
<span id="L252" class="LineNr">252 </span>  <span class="Delimiter">);</span>
<span id="L253" class="LineNr">253 </span>  <a href='003trace.cc.html#L290'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
<span id="L254" class="LineNr">254 </span>      <span class="Constant">&quot;run: 0x00000001 opcode: 0f</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
<span id="L255" class="LineNr">255 </span>      <span class="Constant">&quot;run: 0x00000007 opcode: 05</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
<span id="L256" class="LineNr">256 </span>      <span class="Constant">&quot;run: 0x0000000c opcode: 05</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
<span id="L257" class="LineNr">257 </span>  <span class="Delimiter">);</span>
<span id="L258" class="LineNr">258 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_DOESNT_CONTAIN</a><span class="Delimiter">(</span><span class="Constant">&quot;run: jump 5&quot;</span><span class="Delimiter">);</span>
<span id="L259" class="LineNr">259 </span><span class="Delimiter">}</span>
<span id="L260" class="LineNr">260 </span>
<span id="L261" class="LineNr">261 </span><span class="Comment">//:: jump if lesser</span>
<span id="L262" class="LineNr">262 </span>
<span id="L263" class="LineNr">263 </span><span class="Delimiter">:(before &quot;End Initialize Op Names&quot;)</span>
<span id="L264" class="LineNr">264 </span><a href='001help.cc.html#L237'>put_new</a><span class="Delimiter">(</span><a href='010vm.cc.html#L356'>Name_0f</a><span class="Delimiter">,</span> <span class="Constant">&quot;8c&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;jump <a href='040tests.cc.html#L82'>disp32</a> bytes away if lesser, if SF != <a href='010vm.cc.html#L91'>OF</a> (jcc/jl/jnge)&quot;</span><span class="Delimiter">);</span>
<span id="L265" class="LineNr">265 </span><a href='001help.cc.html#L237'>put_new</a><span class="Delimiter">(</span><a href='010vm.cc.html#L356'>Name_0f</a><span class="Delimiter">,</span> <span class="Constant">&quot;82&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;jump <a href='040tests.cc.html#L82'>disp32</a> bytes away if lesser (addr, float), if <a href='010vm.cc.html#L90'>CF</a> is set (jcc/jb/jnae)&quot;</span><span class="Delimiter">);</span>
<span id="L266" class="LineNr">266 </span>
<span id="L267" class="LineNr">267 </span><span class="Delimiter">:(code)</span>
<span id="L268" class="LineNr">268 </span><span class="Normal">void</span> <a href='018jump_disp32.cc.html#L268'>test_jl_disp32_success</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
<span id="L269" class="LineNr">269 </span>  <a href='010vm.cc.html#L89'>ZF</a> = <span class="Constant">false</span><span class="Delimiter">;</span>
<span id="L270" class="LineNr">270 </span>  SF = <span class="Constant">true</span><span class="Delimiter">;</span>
<span id="L271" class="LineNr">271 </span>  <a href='010vm.cc.html#L91'>OF</a> = <span class="Constant">false</span><span class="Delimiter">;</span>
<span id="L272" class="LineNr">272 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
<span id="L273" class="LineNr">273 </span>      <span class="Constant">&quot;== code 0x1</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
<span id="L274" class="LineNr">274 </span>      <span class="Comment">// op     ModR/M  SIB   displacement  immediate</span>
<span id="L275" class="LineNr">275 </span>      <span class="Constant">&quot;  0f 8c                05 00 00 00               </span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>  <span class="Comment">// skip 1 instruction</span>
<span id="L276" class="LineNr">276 </span>      <span class="Constant">&quot;  05                                 00 00 00 01 </span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
<span id="L277" class="LineNr">277 </span>      <span class="Constant">&quot;  05                                 00 00 00 02 </span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
<span id="L278" class="LineNr">278 </span>  <span class="Delimiter">);</span>
<span id="L279" class="LineNr">279 </span>  <a href='003trace.cc.html#L290'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
<span id="L280" class="LineNr">280 </span>      <span class="Constant">&quot;run: 0x00000001 opcode: 0f</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
<span id="L281" class="LineNr">281 </span>      <span class="Constant">&quot;run: jump 5</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
<span id="L282" class="LineNr">282 </span>      <span class="Constant">&quot;run: 0x0000000c opcode: 05</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
<span id="L283" class="LineNr">283 </span>  <span class="Delimiter">);</span>
<span id="L284" class="LineNr">284 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_DOESNT_CONTAIN</a><span class="Delimiter">(</span><span class="Constant">&quot;run: 0x00000007 opcode: 05&quot;</span><span class="Delimiter">);</span>
<span id="L285" class="LineNr">285 </span><span class="Delimiter">}</span>
<span id="L286" class="LineNr">286 </span>
<span id="L287" class="LineNr">287 </span><span class="Delimiter">:(before &quot;End Two-Byte Opcodes Starting With 0f&quot;)</span>
<span id="L288" class="LineNr">288 </span><span class="Normal">case</span> <span class="Constant">0x8c</span>: <span class="Delimiter">{</span>  <span class="Comment">// jump disp32 if SF and !ZF</span>
<span id="L289" class="LineNr">289 </span>  <span class="Normal">const</span> <span class="Normal">int32_t</span> offset = <a href='011run.cc.html#L433'>next32</a><span class="Delimiter">();</span>
<span id="L290" class="LineNr">290 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>SF != <a href='010vm.cc.html#L91'>OF</a><span class="Delimiter">)</span> <span class="Delimiter">{</span>
<span id="L291" class="LineNr">291 </span>    <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span>Callstack_depth+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;jump &quot;</span> &lt;&lt; offset &lt;&lt; end<span class="Delimiter">();</span>
<span id="L292" class="LineNr">292 </span>    <a href='010vm.cc.html#L26'>EIP</a> += offset<span class="Delimiter">;</span>
<span id="L293" class="LineNr">293 </span>  <span class="Delimiter">}</span>
<span id="L294" class="LineNr">294 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
<span id="L295" class="LineNr">295 </span><span class="Delimiter">}</span>
<span id="L296" class="LineNr">296 </span><span class="Normal">case</span> <span class="Constant">0x82</span>: <span class="Delimiter">{</span>  <span class="Comment">// jump disp32 if CF</span>
<span id="L297" class="LineNr">297 </span>  <span class="Normal">const</span> <span class="Normal">int32_t</span> offset = <a href='011run.cc.html#L433'>next32</a><span class="Delimiter">();</span>
<span id="L298" class="LineNr">298 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='010vm.cc.html#L90'>CF</a><span class="Delimiter">)</span> <span class="Delimiter">{</span>
<span id="L299" class="LineNr">299 </span>    <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span>Callstack_depth+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;jump &quot;</span> &lt;&lt; offset &lt;&lt; end<span class="Delimiter">();</span>
<span id="L300" class="LineNr">300 </span>    <a href='010vm.cc.html#L26'>EIP</a> += offset<span class="Delimiter">;</span>
<span id="L301" class="LineNr">301 </span>  <span class="Delimiter">}</span>
<span id="L302" class="LineNr">302 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
<span id="L303" class="LineNr">303 </span><span class="Delimiter">}</span>
<span id="L304" class="LineNr">304 </span>
<span id="L305" class="LineNr">305 </span><span class="Delimiter">:(code)</span>
<span id="L306" class="LineNr">306 </span><span class="Normal">void</span> <a href='018jump_disp32.cc.html#L306'>test_jl_disp32_fail</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
<span id="L307" class="LineNr">307 </span>  <a href='010vm.cc.html#L89'>ZF</a> = <span class="Constant">false</span><span class="Delimiter">;</span>
<span id="L308" class="LineNr">308 </span>  SF = <span class="Constant">false</span><span class="Delimiter">;</span>
<span id="L309" class="LineNr">309 </span>  <a href='010vm.cc.html#L91'>OF</a> = <span class="Constant">false</span><span class="Delimiter">;</span>
<span id="L310" class="LineNr">310 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
<span id="L311" class="LineNr">311 </span>      <span class="Constant">&quot;== code 0x1</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
<span id="L312" class="LineNr">312 </span>      <span class="Comment">// op     ModR/M  SIB   displacement  immediate</span>
<span id="L313" class="LineNr">313 </span>      <span class="Constant">&quot;  0f 8c                05 00 00 00               </span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>  <span class="Comment">// skip 1 instruction</span>
<span id="L314" class="LineNr">314 </span>      <span class="Constant">&quot;  05                                 00 00 00 01 </span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
<span id="L315" class="LineNr">315 </span>      <span class="Constant">&quot;  05                                 00 00 00 02 </span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
<span id="L316" class="LineNr">316 </span>  <span class="Delimiter">);</span>
<span id="L317" class="LineNr">317 </span>  <a href='003trace.cc.html#L290'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
<span id="L318" class="LineNr">318 </span>      <span class="Constant">&quot;run: 0x00000001 opcode: 0f</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
<span id="L319" class="LineNr">319 </span>      <span class="Constant">&quot;run: 0x00000007 opcode: 05</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
<span id="L320" class="LineNr">320 </span>      <span class="Constant">&quot;run: 0x0000000c opcode: 05</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
<span id="L321" class="LineNr">321 </span>  <span class="Delimiter">);</span>
<span id="L322" class="LineNr">322 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_DOESNT_CONTAIN</a><span class="Delimiter">(</span><span class="Constant">&quot;run: jump 5&quot;</span><span class="Delimiter">);</span>
<span id="L323" class="LineNr">323 </span><span class="Delimiter">}</span>
<span id="L324" class="LineNr">324 </span>
<span id="L325" class="LineNr">325 </span><span class="Comment">//:: jump if lesser or equal</span>
<span id="L326" class="LineNr">326 </span>
<span id="L327" class="LineNr">327 </span><span class="Delimiter">:(before &quot;End Initialize Op Names&quot;)</span>
<span id="L328" class="LineNr">328 </span><a href='001help.cc.html#L237'>put_new</a><span class="Delimiter">(</span><a href='010vm.cc.html#L356'>Name_0f</a><span class="Delimiter">,</span> <span class="Constant">&quot;8e&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;jump <a href='040tests.cc.html#L82'>disp32</a> bytes away if lesser or equal, if <a href='010vm.cc.html#L89'>ZF</a> is set or SF != <a href='010vm.cc.html#L91'>OF</a> (jcc/jle/jng)&quot;</span><span class="Delimiter">);</span>
<span id="L329" class="LineNr">329 </span><a href='001help.cc.html#L237'>put_new</a><span class="Delimiter">(</span><a href='010vm.cc.html#L356'>Name_0f</a><span class="Delimiter">,</span> <span class="Constant">&quot;86&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;jump <a href='040tests.cc.html#L82'>disp32</a> bytes away if lesser or equal (addr, float), if <a href='010vm.cc.html#L89'>ZF</a> is set or <a href='010vm.cc.html#L90'>CF</a> is set (jcc/jbe/jna)&quot;</span><span class="Delimiter">);</span>
<span id="L330" class="LineNr">330 </span>
<span id="L331" class="LineNr">331 </span><span class="Delimiter">:(code)</span>
<span id="L332" class="LineNr">332 </span><span class="Normal">void</span> <a href='018jump_disp32.cc.html#L332'>test_jle_disp32_equal</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
<span id="L333" class="LineNr">333 </span>  <a href='010vm.cc.html#L89'>ZF</a> = <span class="Constant">true</span><span class="Delimiter">;</span>
<span id="L334" class="LineNr">334 </span>  SF = <span class="Constant">false</span><span class="Delimiter">;</span>
<span id="L335" class="LineNr">335 </span>  <a href='010vm.cc.html#L91'>OF</a> = <span class="Constant">false</span><span class="Delimiter">;</span>
<span id="L336" class="LineNr">336 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
<span id="L337" class="LineNr">337 </span>      <span class="Constant">&quot;== code 0x1</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
<span id="L338" class="LineNr">338 </span>      <span class="Comment">// op     ModR/M  SIB   displacement  immediate</span>
<span id="L339" class="LineNr">339 </span>      <span class="Constant">&quot;  0f 8e                05 00 00 00               </span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>  <span class="Comment">// skip 1 instruction</span>
<span id="L340" class="LineNr">340 </span>      <span class="Constant">&quot;  05                                 00 00 00 01 </span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
<span id="L341" class="LineNr">341 </span>      <span class="Constant">&quot;  05                                 00 00 00 02 </span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
<span id="L342" class="LineNr">342 </span>  <span class="Delimiter">);</span>
<span id="L343" class="LineNr">343 </span>  <a href='003trace.cc.html#L290'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
<span id="L344" class="LineNr">344 </span>      <span class="Constant">&quot;run: 0x00000001 opcode: 0f</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
<span id="L345" class="LineNr">345 </span>      <span class="Constant">&quot;run: jump 5</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
<span id="L346" class="LineNr">346 </span>      <span class="Constant">&quot;run: 0x0000000c opcode: 05</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
<span id="L347" class="LineNr">347 </span>  <span class="Delimiter">);</span>
<span id="L348" class="LineNr">348 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_DOESNT_CONTAIN</a><span class="Delimiter">(</span><span class="Constant">&quot;run: 0x00000007 opcode: 05&quot;</span><span class="Delimiter">);</span>
<span id="L349" class="LineNr">349 </span><span class="Delimiter">}</span>
<span id="L350" class="LineNr">350 </span>
<span id="L351" class="LineNr">351 </span><span class="Delimiter">:(code)</span>
<span id="L352" class="LineNr">352 </span><span class="Normal">void</span> <a href='018jump_disp32.cc.html#L352'>test_jle_disp32_lesser</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
<span id="L353" class="LineNr">353 </span>  <a href='010vm.cc.html#L89'>ZF</a> = <span class="Constant">false</span><span class="Delimiter">;</span>
<span id="L354" class="LineNr">354 </span>  SF = <span class="Constant">true</span><span class="Delimiter">;</span>
<span id="L355" class="LineNr">355 </span>  <a href='010vm.cc.html#L91'>OF</a> = <span class="Constant">false</span><span class="Delimiter">;</span>
<span id="L356" class="LineNr">356 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
<span id="L357" class="LineNr">357 </span>      <span class="Constant">&quot;== code 0x1</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
<span id="L358" class="LineNr">358 </span>      <span class="Comment">// op     ModR/M  SIB   displacement  immediate</span>
<span id="L359" class="LineNr">359 </span>      <span class="Constant">&quot;  0f 8e                05 00 00 00               </span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>  <span class="Comment">// skip 1 instruction</span>
<span id="L360" class="LineNr">360 </span>      <span class="Constant">&quot;  05                                 00 00 00 01 </span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
<span id="L361" class="LineNr">361 </span>      <span class="Constant">&quot;  05                                 00 00 00 02 </span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
<span id="L362" class="LineNr">362 </span>  <span class="Delimiter">);</span>
<span id="L363" class="LineNr">363 </span>  <a href='003trace.cc.html#L290'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
<span id="L364" class="LineNr">364 </span>      <span class="Constant">&quot;run: 0x00000001 opcode: 0f</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
<span id="L365" class="LineNr">365 </span>      <span class="Constant">&quot;run: jump 5</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
<span id="L366" class="LineNr">366 </span>      <span class="Constant">&quot;run: 0x0000000c opcode: 05</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
<span id="L367" class="LineNr">367 </span>  <span class="Delimiter">);</span>
<span id="L368" class="LineNr">368 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_DOESNT_CONTAIN</a><span class="Delimiter">(</span><span class="Constant">&quot;run: 0x00000007 opcode: 05&quot;</span><span class="Delimiter">);</span>
<span id="L369" class="LineNr">369 </span><span class="Delimiter">}</span>
<span id="L370" class="LineNr">370 </span>
<span id="L371" class="LineNr">371 </span><span class="Delimiter">:(before &quot;End Two-Byte Opcodes Starting With 0f&quot;)</span>
<span id="L372" class="LineNr">372 </span><span class="Normal">case</span> <span class="Constant">0x8e</span>: <span class="Delimiter">{</span>  <span class="Comment">// jump disp32 if SF or ZF</span>
<span id="L373" class="LineNr">373 </span>  <span class="Normal">const</span> <span class="Normal">int32_t</span> offset = <a href='011run.cc.html#L433'>next32</a><span class="Delimiter">();</span>
<span id="L374" class="LineNr">374 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='010vm.cc.html#L89'>ZF</a> || SF != <a href='010vm.cc.html#L91'>OF</a><span class="Delimiter">)</span> <span class="Delimiter">{</span>
<span id="L375" class="LineNr">375 </span>    <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span>Callstack_depth+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;jump &quot;</span> &lt;&lt; offset &lt;&lt; end<span class="Delimiter">();</span>
<span id="L376" class="LineNr">376 </span>    <a href='010vm.cc.html#L26'>EIP</a> += offset<span class="Delimiter">;</span>
<span id="L377" class="LineNr">377 </span>  <span class="Delimiter">}</span>
<span id="L378" class="LineNr">378 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
<span id="L379" class="LineNr">379 </span><span class="Delimiter">}</span>
<span id="L380" class="LineNr">380 </span><span class="Normal">case</span> <span class="Constant">0x86</span>: <span class="Delimiter">{</span>  <span class="Comment">// jump disp32 if ZF or CF</span>
<span id="L381" class="LineNr">381 </span>  <span class="Normal">const</span> <span class="Normal">int32_t</span> offset = <a href='011run.cc.html#L433'>next32</a><span class="Delimiter">();</span>
<span id="L382" class="LineNr">382 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='010vm.cc.html#L89'>ZF</a> || <a href='010vm.cc.html#L90'>CF</a><span class="Delimiter">)</span> <span class="Delimiter">{</span>
<span id="L383" class="LineNr">383 </span>    <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span>Callstack_depth+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;jump &quot;</span> &lt;&lt; offset &lt;&lt; end<span class="Delimiter">();</span>
<span id="L384" class="LineNr">384 </span>    <a href='010vm.cc.html#L26'>EIP</a> += offset<span class="Delimiter">;</span>
<span id="L385" class="LineNr">385 </span>  <span class="Delimiter">}</span>
<span id="L386" class="LineNr">386 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
<span id="L387" class="LineNr">387 </span><span class="Delimiter">}</span>
<span id="L388" class="LineNr">388 </span>
<span id="L389" class="LineNr">389 </span><span class="Delimiter">:(code)</span>
<span id="L390" class="LineNr">390 </span><span class="Normal">void</span> <a href='018jump_disp32.cc.html#L390'>test_jle_disp32_greater</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
<span id="L391" class="LineNr">391 </span>  <a href='010vm.cc.html#L89'>ZF</a> = <span class="Constant">false</span><span class="Delimiter">;</span>
<span id="L392" class="LineNr">392 </span>  SF = <span class="Constant">false</span><span class="Delimiter">;</span>
<span id="L393" class="LineNr">393 </span>  <a href='010vm.cc.html#L91'>OF</a> = <span class="Constant">false</span><span class="Delimiter">;</span>
<span id="L394" class="LineNr">394 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
<span id="L395" class="LineNr">395 </span>      <span class="Constant">&quot;== code 0x1</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
<span id="L396" class="LineNr">396 </span>      <span class="Comment">// op     ModR/M  SIB   displacement  immediate</span>
<span id="L397" class="LineNr">397 </span>      <span class="Constant">&quot;  0f 8e                05 00 00 00               </span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>  <span class="Comment">// skip 1 instruction</span>
<span id="L398" class="LineNr">398 </span>      <span class="Constant">&quot;  05                                 00 00 00 01 </span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
<span id="L399" class="LineNr">399 </span>      <span class="Constant">&quot;  05                                 00 00 00 02 </span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
<span id="L400" class="LineNr">400 </span>  <span class="Delimiter">);</span>
<span id="L401" class="LineNr">401 </span>  <a href='003trace.cc.html#L290'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
<span id="L402" class="LineNr">402 </span>      <span class="Constant">&quot;run: 0x00000001 opcode: 0f</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
<span id="L403" class="LineNr">403 </span>      <span class="Constant">&quot;run: 0x00000007 opcode: 05</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
<span id="L404" class="LineNr">404 </span>      <span class="Constant">&quot;run: 0x0000000c opcode: 05</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span>
<span id="L405" class="LineNr">405 </span>  <span class="Delimiter">);</span>
<span id="L406" class="LineNr">406 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_DOESNT_CONTAIN</a><span class="Delimiter">(</span><span class="Constant">&quot;run: jump 5&quot;</span><span class="Delimiter">);</span>
<span id="L407" class="LineNr">407 </span><span class="Delimiter">}</span>
<span id="L408" class="LineNr">408 </span>
<span id="L409" class="LineNr">409 </span><span class="Comment">//:: jump if overflow</span>
<span id="L410" class="LineNr">410 </span>
<span id="L411" class="LineNr">411 </span><span class="Delimiter">:(before &quot;End Initialize Op Names&quot;)</span>
<span id="L412" class="LineNr">412 </span><a href='001help.cc.html#L237'>put_new</a><span class="Delimiter">(</span><a href='010vm.cc.html#L356'>Name_0f</a><span class="Delimiter">,</span> <span class="Constant">&quot;80&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;jump <a href='040tests.cc.html#L82'>disp32</a> bytes away if <a href='010vm.cc.html#L91'>OF</a> is set (jcc/jo)&quot;</span><span class="Delimiter">);</span>
<span id="L413" class="LineNr">413 </span><a href='001help.cc.html#L237'>put_new</a><span class="Delimiter">(</span><a href='010vm.cc.html#L356'>Name_0f</a><span class="Delimiter">,</span> <span class="Constant">&quot;81&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;jump <a href='040tests.cc.html#L82'>disp32</a> bytes away if <a href='010vm.cc.html#L91'>OF</a> is unset (jcc/jno)&quot;</span><span class="Delimiter">);</span>
<span id="L414" class="LineNr">414 </span>
<span id="L415" class="LineNr">415 </span><span class="Delimiter">:(before &quot;End Two-Byte Opcodes Starting With 0f&quot;)</span>
<span id="L416" class="LineNr">416 </span><span class="Normal">case</span> <span class="Constant">0x80</span>: <span class="Delimiter">{</span>  <span class="Comment">// jump disp8 if OF is set</span>
<span id="L417" class="LineNr">417 </span>  <span class="Normal">const</span> <span class="Normal">int32_t</span> offset = <a href='011run.cc.html#L433'>next32</a><span class="Delimiter">();</span>
<span id="L418" class="LineNr">418 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='010vm.cc.html#L91'>OF</a><span class="Delimiter">)</span> <span class="Delimiter">{</span>
<span id="L419" class="LineNr">419 </span>    <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span>Callstack_depth+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;jump &quot;</span> &lt;&lt; <a href='010vm.cc.html#L410'>NUM</a><span class="Delimiter">(</span>offset<span class="Delimiter">)</span> &lt;&lt; end<span class="Delimiter">();</span>
<span id="L420" class="LineNr">420 </span>    <a href='010vm.cc.html#L26'>EIP</a> += offset<span class="Delimiter">;</span>
<span id="L421" class="LineNr">421 </span>  <span class="Delimiter">}</span>
<span id="L422" class="LineNr">422 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
<span id="L423" class="LineNr">423 </span><span class="Delimiter">}</span>
<span id="L424" class="LineNr">424 </span><span class="Normal">case</span> <span class="Constant">0x81</span>: <span class="Delimiter">{</span>  <span class="Comment">// jump disp8 if OF is unset</span>
<span id="L425" class="LineNr">425 </span>  <span class="Normal">const</span> <span class="Normal">int32_t</span> offset = <a href='011run.cc.html#L433'>next32</a><span class="Delimiter">();</span>
<span id="L426" class="LineNr">426 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!OF<span class="Delimiter">)</span> <span class="Delimiter">{</span>
<span id="L427" class="LineNr">427 </span>    <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span>Callstack_depth+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;jump &quot;</span> &lt;&lt; <a href='010vm.cc.html#L410'>NUM</a><span class="Delimiter">(</span>offset<span class="Delimiter">)</span> &lt;&lt; end<span class="Delimiter">();</span>
<span id="L428" class="LineNr">428 </span>    <a href='010vm.cc.html#L26'>EIP</a> += offset<span class="Delimiter">;</span>
<span id="L429" class="LineNr">429 </span>  <span class="Delimiter">}</span>
<span id="L430" class="LineNr">430 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
<span id="L431" class="LineNr">431 </span><span class="Delimiter">}</span>
</pre>
</body>
</html>
<!-- vim: set foldmethod=manual : -->