: bankrel, (bank rel, ; : br, dup HALIMM and if $e9 c, bankrel, else ?mem+, $ff20 or op, then ; : brr, dup HALIMM and if $e8 c, bankrel, else ?mem+, $ff10 or op, then ; : brc, over HALIMM and if swap (bank swap bbrc, else $1 xor $70 or c, here $0 , swap br, here over - $1 - swap ! then ; : le@, @, ; : xchgLH, dup $3 invand if halerr then $86 c, dup $3 lshift or $e0 or c, ; : rol16, $c1 c, $c0 or c, $10 c, ; : dst@ >>3 b2:0 ; : be@, dup (8b? if @, else dup (dir? if dup (16b? if dup dst@ xchgLH, @, else dup dst@ dup xchgLH, dup rol16, xchgLH, @, then else dup (16b? if dup @, dst@ xchgLH, else dup @, dst@ dup xchgLH, dup rol16, xchgLH, then then then ; : ale@, @, ; : abe@, be@, ; : u@, @, ; : @!, $86 opc! op, ; : ?, dup (16b? if drop dup c, $8 rshift c, else (8b? if c, else , then then ; : arii, or dup op, ?, ; : +n, $0 R>) dup (8b? if $8000 arii, else over $80 + $ffffff00 and if $8000 arii, else $83 opc! op, c, then then ; : testz, $0 swap +n, ; : !n, dup $c6 opc! $0 R>) op, ?, ; : cx $1 ; : _reg $b lshift $200 + or op, ; : ari, over HALIMM and if single! dup (bank dup $80 + $ffffff00 and if $81 c, swap c, , else $83 c, swap c, c, then else over (dir? if _reg else over dup (16b? swap (8b? or if swap dup cx R>) @, $ff and $3 cx modrm! $300 or swap $b lshift or op, else _reg then then then ; : +, $0 ari, ; : -, $5 ari, ; : &, $4 ari, ; : |, $1 ari, ; : ^, $6 ari, ; : compare, $7 ari, ; : ?signed over (signed? if dup $a and if dup $4 and if $8 else $a then + then then ; : ?br, ?signed swap compare, bbrc, ; : if, ?signed swap compare, invcond here dup rot bbrc, ; ( ax 0 i) mov, al setXX, ) : bool, ?signed swap compare, $b8 , $f00 w, $c090 or w, ; : _<>0+, dup HALIMM and if dup (bank if +, else drop then else +, then ; : _neg+ $f6 opc! rmrex op, _<>0+, ; : swap-, dup dup (dir? if -dir) $3 R>) else -&) $3 single! clrb then _neg+ ; : _<>cx!, dup b2:0 cx xor if cx R>) @, else drop then ; : shift, over HALIMM and if single! $c1 c, dup c, (bank c, else over (dir? if <<3 swap dup >>3 b2:0 cx xor if dup $3 cx modrm! clrb @, then -dir) $0 R>) or $d3 over (sz $1 and if $1 invand then opc! op, else over _<>cx!, single! $d3 c, c, then then ; : <<, $4 shift, ; : >>, $5 over (signed? if $2 + then shift, ; : lrot, $0 shift, ; : rrot, $1 shift, ; : normalize! dup (&? if dup (dir? if dup >>3 b2:0 over b2:0 <<3 or swap $3f invand or -dir) then then ; : ?src>CX, dup (&? not if dup -dir) cx R>) @, $0 cx modrm! $f $1c lshift invand HALDIRECT or then ; : _, c, dup dst@ single! dup modrm, (bank ; : *, dup HALIMM and if dup (bank $ff invand if $69 _, , else $6b _, c, then else dup dup (sz $3 and over (dir? or if ?src>CX, then $af opc! normalize! op0f, dup (dir? if cx R>) @, else drop then then ; : ?immDI! dup HALIMM and if $bf c, dup (bank , HALIMM invand $c7 or then ; : ?swapAX, dup $38 and if dup >>3 b2:0 $90 or c, $0 R>) then ; : __ dup ?swapAX, $f630 or dup (signed? if $99 ( CDQ ) c, $8 or op, else $d231 ( dx dx xor, ) w, op, then ?swapAX, drop ; : _ deref! ?immDI! dup $7 and $2 - if __ else $d189 ( cx dx mov, ) w, $1 - __ then ; : /mod, dup (dir? if -dir) dup @!, dup _ @!, else _ then ; ( cx dx mov, di bx xchg, si ax xchg, si ax xchg, di dx xchg, ) : _ $fb87d189 , $96 c, ?di+, ?si+, w, ?di-, ?si-, $96 c, $fb87 w, ; ( rep, movs, ) : move[], $a5f3 _ ; : cmove[], $a4f3 _ ; ( cx dx mov, di dx xchg, si ax xchg, ax ax cmp, (set Z for zero guard) ) : _ $fb87d189 , $96 c, ?di+, ?si+, $c039 w, w, $96 c, $fb87 w, ; ( repz, cmps, ) : []=, $a7f3 _ ; : c[]=, $a6f3 _ ; ( cx dx mov, di bx mov, jnz( cx inc, dx cx sub, ax ax cmp, ) : _ $df89d189 , ?di+, w, $0675 w, $c1ff w, $c039ca29 , ; ( repnz, scas, ) : idx[], $aff2 _ ; : cidx[], $aef2 _ ; ( di bx xchg, cx dx mov, di bx xchg, ) : _ $fb87d189 , ?di+, w, ?di-, $fb87 w, ; ( rep, stos, ) : fill[], $abf3 _ ; : cfill[], $aaf3 _ ;