package Ġdev . the code war ri or . kotlin cpu . common Ċ Ċ import Ġdev . the code war ri or . kotlin cpu . common . Arguments . enum Ċ import Ġdev . the code war ri or . kotlin cpu . common . Arguments . asm _ const Ċ import Ġdev . the code war ri or . kotlin cpu . common . Arguments . reg Ċ import Ġdev . the code war ri or . kotlin cpu . common . Arguments . label Ċ import Ġdev . the code war ri or . kotlin cpu . common . Arguments . u 8 Ċ import Ġdev . the code war ri or . kotlin cpu . common . Arguments . i 8 Ċ import Ġdev . the code war ri or . kotlin cpu . common . Arguments . u 1 6 Ċ import Ġdev . the code war ri or . kotlin cpu . common . Arguments . i 1 6 Ċ import Ġdev . the code war ri or . kotlin cpu . common . Arguments . u 3 2 Ċ import Ġdev . the code war ri or . kotlin cpu . common . Arguments . i 3 2 Ċ import Ġdev . the code war ri or . kotlin cpu . common . Arguments . u 6 4 Ċ import Ġdev . the code war ri or . kotlin cpu . common . Arguments . i 6 4 Ċ import Ġdev . the code war ri or . kotlin cpu . common . Arguments . f 3 2 Ċ import Ġdev . the code war ri or . kotlin cpu . common . Arguments . f 6 4 Ċ Ċ object ĠInstructions Ġ{ ĊĠĠĠ Ġprivate Ġval Ġop codes Ġ= ĠOpcode Tracker () ĊĊĠĠĠ Ġval Ġinstructions Ġ= Ġmutable ListOf < Insn >() ĊĊĠĠĠ Ġval Ġpseudo _ data Ġ= ĠIn sn (" pseudo _ data ", Ġ 0 u ) Ġ% ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠ ĠN / A Ġ: Ġ% data Ġtype Ġ... Ġ; Ġenum Ġ... ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAr bitrary Ġdata ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠ Ġval Ġpseudo _ null Ġ= ĠIn sn (" pseudo _ null ", Ġ 0 u ) Ġ% ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠ ĠN / A Ġ: ĠN / A ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA Ġgeneric Ġpseudo Ġinstruction Ġfor Ġmarkers , Ġetc . ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĊĠĠĠ Ġval Ġnop Ġ= Ġ+ Insn (" nop ", Ġop codes . create ()) Ġ% ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ% op % : Ġnop ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNo - op ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠ Ġval Ġhalt Ġ= Ġ+ Insn (" halt ", Ġop codes . create ()) Ġ% ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ% op % : Ġhalt ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠH alt Ġprogram Ġexecution . ĠWhen Ġthis Ġinstruction Ġis Ġexecuted Ġthe Ġclock Ġwill Ġstop Ġand Ġthe ĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprogram Ġcounter Ġwill Ġnot Ġadvance ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĊĊĠĠĠ Ġval Ġmov _ imm Ġ= Ġ+ Insn (" mov _ imm ", Ġop codes . create (), Ġu 3 2 (" value "), Ġreg (" dest ")) Ġ% ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ% op % : Ġmov Ġ% args % ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMove Ġa Ġconstant Ġinto Ġa Ġregister ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠ Ġval Ġpseudo _ mov _ label Ġ= ĠIn sn ( mov _ imm , Ġlabel (" value "), Ġreg (" dest ")) Ġ% ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ% op % : Ġmov Ġ% args % ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMove Ġa Ġlabel 's Ġaddress Ġinto Ġa Ġregister ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠ Ġval Ġmov _ r Ġ= Ġ+ Insn (" mov _ r ", Ġop codes . create (), Ġreg (" src "), Ġreg (" dest ")) Ġ% ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ% op % : Ġmov Ġ% args % ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMove Ġone Ġregister 's Ġvalue Ġinto Ġanother Ġregister ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĊĠĠĠ Ġval Ġl dr _ imm Ġ= Ġ+ Insn (" ldr _ imm ", Ġop codes . create (), Ġenum (" size ", ĠData Size . WORD ), Ġreg (" dest "), Ġasm _ const (" [" ), Ġu 3 2 (" address "), Ġasm _ const (" ] ")) Ġ% ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ% op % : Ġl dr Ġ% args % ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLoad Ġa Ġvalue Ġfrom Ġa Ġfixed Ġaddress ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠ Ġval Ġl dr _ imm _ off _ r Ġ= Ġ+ Insn (" ldr _ imm _ off _ r ", Ġop codes . create (), Ġenum (" size ", ĠData Size . WORD ), Ġreg (" dest "), Ġasm _ const (" [" ), Ġu 3 2 (" address "), Ġreg (" offset "), Ġasm _ const (" ] ")) Ġ% ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ% op % : Ġl dr Ġ% args % ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLoad Ġa Ġvalue Ġfrom Ġa Ġfixed Ġaddress Ġwith Ġthe Ġoffset Ġstored Ġin Ġthe Ġoffset Ġregister ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠ Ġval Ġpseudo _ ldr _ label Ġ= ĠIn sn ( ldr _ imm , Ġenum (" size ", ĠData Size . WORD ), Ġreg (" dest "), Ġasm _ const (" [" ), Ġlabel (" address "), Ġasm _ const (" ] ")) Ġ% ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ% op % : Ġl dr Ġ% args % ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLoad Ġa Ġvalue Ġfrom Ġthe Ġlabel 's Ġlocation ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠ Ġval Ġpseudo _ ldr _ label _ off _ r Ġ= ĠIn sn ( ldr _ imm _ off _ r , Ġenum (" size ", ĠData Size . WORD ), Ġreg (" dest "), Ġasm _ const (" [" ), Ġlabel (" address "), Ġreg (" offset "), Ġasm _ const (" ] ")) Ġ% ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ% op % : Ġl dr Ġ% args % ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLoad Ġa Ġvalue Ġfrom Ġthe Ġlabel 's Ġlocation Ġwith Ġthe Ġoffset Ġstored Ġin Ġthe Ġoffset Ġregister ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĊĠĠĠ Ġval Ġl dr _ r Ġ= Ġ+ Insn (" ldr _ r ", Ġop codes . create (), Ġenum (" size ", ĠData Size . WORD ), Ġreg (" dest "), Ġasm _ const (" [" ), Ġreg (" address "), Ġasm _ const (" ] ")) Ġ% ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ% op % : Ġl dr Ġ% args % ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLoad Ġa Ġvalue Ġfrom Ġthe Ġaddress Ġstored Ġin Ġa Ġregister ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠ Ġval Ġl dr _ r _ off _ imm Ġ= Ġ+ Insn (" ldr _ r _ off _ imm ", Ġop codes . create (), Ġenum (" size ", ĠData Size . WORD ), Ġreg (" dest "), Ġasm _ const (" [" ), Ġreg (" address "), Ġi 3 2 (" offset "), Ġasm _ const (" ] ")) Ġ% ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ% op % : Ġl dr Ġ% args % ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLoad Ġa Ġvalue Ġfrom Ġthe Ġaddress Ġstored Ġin Ġa Ġregister Ġwith Ġa Ġfixed Ġoffset ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠ Ġval Ġl dr _ r _ off _ r Ġ= Ġ+ Insn (" ldr _ r _ off _ r ", Ġop codes . create (), Ġenum (" size ", ĠData Size . WORD ), Ġreg (" dest "), Ġasm _ const (" [" ), Ġreg (" address "), Ġreg (" offset "), Ġasm _ const (" ] ")) Ġ% ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ% op % : Ġl dr Ġ% args % ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLoad Ġa Ġvalue Ġfrom Ġthe Ġaddress Ġstored Ġin Ġa Ġregister Ġwith Ġthe Ġoffset Ġstored Ġin Ġthe Ġoffset Ġregister ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĊĠĠĠ Ġval Ġstr _ imm Ġ= Ġ+ Insn (" str _ imm ", Ġop codes . create (), Ġenum (" size ", ĠData Size . WORD ), Ġreg (" src "), Ġasm _ const (" [" ), Ġu 3 2 (" address "), Ġasm _ const (" ] ")) Ġ% ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ% op % : Ġstr Ġ% args % ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStore Ġa Ġvalue Ġat Ġa Ġfixed Ġaddress ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠ Ġval Ġstr _ imm _ off _ r Ġ= Ġ+ Insn (" str _ imm _ off _ r ", Ġop codes . create (), Ġenum (" size ", ĠData Size . WORD ), Ġreg (" src "), Ġasm _ const (" [" ), Ġu 3 2 (" address "), Ġreg (" offset "), Ġasm _ const (" ] ")) Ġ% ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ% op % : Ġstr Ġ% args % ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStore Ġa Ġvalue Ġat Ġa Ġfixed Ġaddress Ġwith Ġthe Ġoffset Ġstored Ġin Ġthe Ġoffset Ġregister ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠ Ġval Ġpseudo _ str _ label Ġ= ĠIn sn ( str _ imm , Ġenum (" size ", ĠData Size . WORD ), Ġreg (" src "), Ġasm _ const (" [" ), Ġlabel (" address "), Ġasm _ const (" ] ")) Ġ% ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ% op % : Ġstr Ġ% args % ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStore Ġa Ġvalue Ġat Ġthe Ġlabel 's Ġlocation ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠ Ġval Ġpseudo _ str _ label _ off _ r Ġ= ĠIn sn ( str _ imm _ off _ r , Ġenum (" size ", ĠData Size . WORD ), Ġreg (" src "), Ġasm _ const (" [" ), Ġlabel (" address "), Ġreg (" offset "), Ġasm _ const (" ] ")) Ġ% ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ% op % : Ġstr Ġ% args % ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStore Ġa Ġvalue Ġat Ġthe Ġlabel 's Ġlocation Ġwith Ġthe Ġoffset Ġstored Ġin Ġthe Ġoffset Ġregister ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĊĠĠĠ Ġval Ġstr _ r Ġ= Ġ+ Insn (" str _ r ", Ġop codes . create (), Ġenum (" size ", ĠData Size . WORD ), Ġreg (" src "), Ġasm _ const (" [" ), Ġreg (" address "), Ġasm _ const (" ] ")) Ġ% ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ% op % : Ġstr Ġ% args % ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStore Ġa Ġvalue Ġat Ġthe Ġaddress Ġstored Ġin Ġa Ġregister ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠ Ġval Ġstr _ r _ off _ imm Ġ= Ġ+ Insn (" str _ r _ off _ imm ", Ġop codes . create (), Ġenum (" size ", ĠData Size . WORD ), Ġreg (" src "), Ġasm _ const (" [" ), Ġreg (" address "), Ġi 3 2 (" offset "), Ġasm _ const (" ] ")) Ġ% ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ% op % : Ġstr Ġ% args % ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStore Ġa Ġvalue Ġat Ġthe Ġaddress Ġstored Ġin Ġa Ġregister Ġwith Ġa Ġfixed Ġoffset ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠ Ġval Ġstr _ r _ off _ r Ġ= Ġ+ Insn (" str _ r _ off _ r ", Ġop codes . create (), Ġenum (" size ", ĠData Size . WORD ), Ġreg (" src "), Ġasm _ const (" [" ), Ġreg (" address "), Ġreg (" offset "), Ġasm _ const (" ] ")) Ġ% ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ% op % : Ġstr Ġ% args % ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStore Ġa Ġvalue Ġat Ġthe Ġaddress Ġstored Ġin Ġa Ġregister Ġwith Ġthe Ġoffset Ġstored Ġin Ġthe Ġoffset Ġregister ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĊĠĠĠ Ġval Ġcmp _ imm Ġ= Ġ+ Insn (" cmp _ imm ", Ġop codes . create (), Ġreg (" left "), Ġu 3 2 (" right ")) Ġ% ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ% op % : Ġcmp Ġ% args % ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCompare Ġa Ġregister 's Ġvalue Ġwith Ġa Ġconstant Ġvalue ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠ Ġval Ġcmp _ r Ġ= Ġ+ Insn (" cmp _ r ", Ġop codes . create (), Ġreg (" left "), Ġreg (" right ")) Ġ% ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ% op % : Ġcmp Ġ% args % ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCompare Ġa Ġregister 's Ġvalue Ġwith Ġanother Ġregister 's Ġvalue ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĊĠĠĠ Ġval Ġjmp _ imm Ġ= Ġ+ Insn (" jmp ", Ġop codes . create (), Ġu 3 2 (" dest ")) Ġ% ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ% op % : Ġjmp Ġ% args % ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJump Ġto Ġa Ġconstant Ġaddress ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠ Ġval Ġpseudo _ jmp _ label Ġ= ĠIn sn ( jmp _ imm , Ġlabel (" dest ")) Ġ% ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ% op % : Ġjmp Ġ% args % ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJump Ġto Ġa Ġlabel ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠ Ġval Ġjmp _ r Ġ= Ġ+ Insn (" jmp _ r ", Ġop codes . create (), Ġreg (" dest ")) Ġ% ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ% op % : Ġjmp Ġ% args % ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJump Ġto Ġthe Ġaddress Ġin Ġa Ġregister ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĊĠĠĠ Ġval Ġcall _ imm Ġ= Ġ+ Insn (" call _ imm ", Ġop codes . create (), Ġu 3 2 (" sub routine ")) Ġ% ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ% op % : Ġcall Ġ% args % ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJump Ġto Ġa Ġconstant Ġaddress , Ġpl acing Ġthe Ġreturn Ġaddress Ġin Ġthe Ġlink Ġregister ĠĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠ Ġval Ġpseudo _ call _ label Ġ= ĠIn sn ( call _ imm , Ġlabel (" sub routine ")) Ġ% ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ% op % : Ġcall Ġ% args % ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJump Ġto Ġa Ġlabel , Ġpl acing Ġthe Ġreturn Ġaddress Ġin Ġthe Ġlink Ġregister ĠĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠ Ġval Ġcall _ r Ġ= Ġ+ Insn (" call _ r ", Ġop codes . create (), Ġreg (" sub routine ")) Ġ% ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ% op % : Ġcall Ġ% args % ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJump Ġto Ġthe Ġaddress Ġin Ġa Ġregister , Ġpl acing Ġthe Ġreturn Ġaddress Ġin Ġthe Ġlink Ġregister ĠĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĊĠĠĠ Ġval Ġinc Ġ= Ġ+ Insn (" inc ", Ġop codes . create (), Ġreg (" reg ")) Ġ% ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ% op % : Ġinc Ġ% args % ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIncrement Ġthe Ġvalue Ġin Ġa Ġregister ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠ Ġval Ġdec Ġ= Ġ+ Insn (" dec ", Ġop codes . create (), Ġreg (" reg ")) Ġ% ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ% op % : Ġdec Ġ% args % ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDec rement Ġthe Ġvalue Ġin Ġa Ġregister ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĊĠĠĠ Ġval Ġadd _ imm Ġ= Ġ+ Insn (" add _ imm ", Ġop codes . create (), Ġreg (" left "), Ġu 3 2 (" right "), Ġreg (" dest ")) Ġ% ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ% op % : Ġadd Ġ% args % ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAdd Ġa Ġconstant Ġvalue Ġto Ġthe Ġvalue Ġin Ġa Ġregister ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠ Ġval Ġadd _ r Ġ= Ġ+ Insn (" add _ r ", Ġop codes . create (), Ġreg (" left "), Ġreg (" right "), Ġreg (" dest ")) Ġ% ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ% op % : Ġadd Ġ% args % ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAdd Ġthe Ġvalues Ġof Ġtwo Ġregisters ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĊĠĠĠ Ġval Ġsub _ imm Ġ= Ġ+ Insn (" sub _ imm ", Ġop codes . create (), Ġreg (" left "), Ġu 3 2 (" right "), Ġreg (" dest ")) Ġ% ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ% op % : Ġsub Ġ% args % ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSubtract Ġa Ġconstant Ġvalue Ġto Ġfrom Ġvalue Ġin Ġa Ġregister ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠ Ġval Ġsub _ r Ġ= Ġ+ Insn (" sub _ r ", Ġop codes . create (), Ġreg (" left "), Ġreg (" right "), Ġreg (" dest ")) Ġ% ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ% op % : Ġsub Ġ% args % ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSubtract Ġthe Ġvalues Ġof Ġtwo Ġregisters ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĊĠĠĠ Ġval Ġmul _ imm Ġ= Ġ+ Insn (" mul _ imm ", Ġop codes . create (), Ġreg (" left "), Ġu 3 2 (" right "), Ġreg (" dest ")) Ġ% ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ% op % : Ġmul Ġ% args % ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMultiply Ġthe Ġvalue Ġin Ġa Ġregister Ġby Ġa Ġconstant ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠ Ġval Ġmul _ r Ġ= Ġ+ Insn (" mul _ r ", Ġop codes . create (), Ġreg (" left "), Ġreg (" right "), Ġreg (" dest ")) Ġ% ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ% op % : Ġmul Ġ% args % ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMultiply Ġthe Ġvalues Ġof Ġtwo Ġregisters ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĊĠĠĠ Ġval Ġdiv _ imm Ġ= Ġ+ Insn (" div _ imm ", Ġop codes . create (), Ġreg (" left "), Ġu 3 2 (" right "), Ġreg (" dest ")) Ġ% ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ% op % : Ġdiv Ġ% args % ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDiv ide Ġthe Ġvalue Ġin Ġa Ġregister Ġby Ġa Ġconstant Ġ( unsigned ) ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠ Ġval Ġdiv _ r Ġ= Ġ+ Insn (" div _ r ", Ġop codes . create (), Ġreg (" left "), Ġreg (" right "), Ġreg (" dest ")) Ġ% ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ% op % : Ġdiv Ġ% args % ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDiv ide Ġthe Ġvalues Ġof Ġtwo Ġregisters Ġ( unsigned ) ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠ Ġval Ġs div _ imm Ġ= Ġ+ Insn (" s div _ imm ", Ġop codes . create (), Ġreg (" left "), Ġu 3 2 (" right "), Ġreg (" dest ")) Ġ% ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ% op % : Ġs div Ġ% args % ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDiv ide Ġthe Ġvalue Ġin Ġa Ġregister Ġby Ġa Ġconstant Ġ( signed ) ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠ Ġval Ġs div _ r Ġ= Ġ+ Insn (" s div _ r ", Ġop codes . create (), Ġreg (" left "), Ġreg (" right "), Ġreg (" dest ")) Ġ% ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ% op % : Ġs div Ġ% args % ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDiv ide Ġthe Ġvalues Ġof Ġtwo Ġregisters Ġ( signed ) ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĊĠĠĠ Ġval Ġmod _ imm Ġ= Ġ+ Insn (" mod _ imm ", Ġop codes . create (), Ġreg (" left "), Ġu 3 2 (" right "), Ġreg (" dest ")) Ġ% ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ% op % : Ġmod Ġ% args % ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGet Ġthe Ġmodulo Ġof Ġthe Ġvalue Ġin Ġa Ġregister Ġand Ġa Ġconstant Ġ( unsigned ) ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠ Ġval Ġmod _ r Ġ= Ġ+ Insn (" mod _ r ", Ġop codes . create (), Ġreg (" left "), Ġreg (" right "), Ġreg (" dest ")) Ġ% ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ% op % : Ġmod Ġ% args % ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGet Ġthe Ġmodulo Ġof Ġthe Ġvalues Ġof Ġtwo Ġregisters Ġ( unsigned ) ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠ Ġval Ġs mod _ imm Ġ= Ġ+ Insn (" sm od _ imm ", Ġop codes . create (), Ġreg (" left "), Ġu 3 2 (" right "), Ġreg (" dest ")) Ġ% ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ% op % : Ġs mod Ġ% args % ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGet Ġthe Ġmodulo Ġof Ġthe Ġvalue Ġin Ġa Ġregister Ġand Ġa Ġconstant Ġ( signed ) ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠ Ġval Ġs mod _ r Ġ= Ġ+ Insn (" sm od _ r ", Ġop codes . create (), Ġreg (" left "), Ġreg (" right "), Ġreg (" dest ")) Ġ% ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ% op % : Ġs mod Ġ% args % ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGet Ġthe Ġmodulo Ġof Ġthe Ġvalues Ġof Ġtwo Ġregisters Ġ( signed ) ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĊĠĠĠ Ġval Ġshl _ imm Ġ= Ġ+ Insn (" sh l _ imm ", Ġop codes . create (), Ġreg (" value "), Ġu 3 2 (" shift "), Ġreg (" dest ")) Ġ% ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ% op % : Ġshl Ġ% args % ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠShift Ġthe Ġbits Ġof Ġa Ġregister Ġleft Ġby Ġa Ġconstant Ġvalue ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠ Ġval Ġshl _ r Ġ= Ġ+ Insn (" sh l _ r ", Ġop codes . create (), Ġreg (" value "), Ġreg (" shift "), Ġreg (" dest ")) Ġ% ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ% op % : Ġshl Ġ% args % ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠShift Ġthe Ġbits Ġof Ġa Ġregister Ġleft Ġby Ġthe Ġvalue Ġin Ġa Ġregister ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĊĠĠĠ Ġval Ġshr _ imm Ġ= Ġ+ Insn (" shr _ imm ", Ġop codes . create (), Ġreg (" value "), Ġu 3 2 (" shift "), Ġreg (" dest ")) Ġ% ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ% op % : Ġshr Ġ% args % ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠShift Ġthe Ġbits Ġof Ġa Ġregister Ġright Ġby Ġa Ġconstant Ġvalue Ġ( unsigned ) ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠ Ġval Ġshr _ r Ġ= Ġ+ Insn (" shr _ r ", Ġop codes . create (), Ġreg (" value "), Ġreg (" shift "), Ġreg (" dest ")) Ġ% ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ% op % : Ġshr Ġ% args % ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠShift Ġthe Ġbits Ġof Ġa Ġregister Ġright Ġby Ġthe Ġvalue Ġin Ġa Ġregister Ġ( unsigned ) ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠ Ġval Ġssh r _ imm Ġ= Ġ+ Insn (" ss hr _ imm ", Ġop codes . create (), Ġreg (" value "), Ġu 3 2 (" shift "), Ġreg (" dest ")) Ġ% ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ% op % : Ġssh r Ġ% args % ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠShift Ġthe Ġbits Ġof Ġa Ġregister Ġright Ġby Ġa Ġconstant Ġvalue Ġ( signed ) ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠ Ġval Ġssh r _ r Ġ= Ġ+ Insn (" ss hr _ r ", Ġop codes . create (), Ġreg (" value "), Ġreg (" shift "), Ġreg (" dest ")) Ġ% ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ% op % : Ġssh r Ġ% args % ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠShift Ġthe Ġbits Ġof Ġa Ġregister Ġright Ġby Ġthe Ġvalue Ġin Ġa Ġregister Ġ( signed ) ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĊĠĠĠ Ġval Ġand _ imm Ġ= Ġ+ Insn (" and _ imm ", Ġop codes . create (), Ġreg (" left "), Ġu 3 2 (" right "), Ġreg (" dest ")) Ġ% ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ% op % : Ġand Ġ% args % ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPerform Ġa Ġbit wise ĠAND Ġbetween Ġthe Ġvalue Ġin Ġa Ġregister Ġand Ġa Ġconstant ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠ Ġval Ġand _ r Ġ= Ġ+ Insn (" and _ r ", Ġop codes . create (), Ġreg (" left "), Ġreg (" right "), Ġreg (" dest ")) Ġ% ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ% op % : Ġand Ġ% args % ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPerform Ġa Ġbit wise ĠAND Ġbetween Ġthe Ġvalues Ġin Ġtwo Ġregisters ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠ Ġval Ġor _ imm Ġ= Ġ+ Insn (" or _ imm ", Ġop codes . create (), Ġreg (" left "), Ġu 3 2 (" right "), Ġreg (" dest ")) Ġ% ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ% op % : Ġor Ġ% args % ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPerform Ġa Ġbit wise ĠOR Ġbetween Ġthe Ġvalue Ġin Ġa Ġregister Ġand Ġa Ġconstant ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠ Ġval Ġor _ r Ġ= Ġ+ Insn (" or _ r ", Ġop codes . create (), Ġreg (" left "), Ġreg (" right "), Ġreg (" dest ")) Ġ% ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ% op % : Ġor Ġ% args % ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPerform Ġa Ġbit wise ĠOR Ġbetween Ġthe Ġvalues Ġin Ġtwo Ġregisters ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠ Ġval Ġxor _ imm Ġ= Ġ+ Insn (" xor _ imm ", Ġop codes . create (), Ġreg (" left "), Ġu 3 2 (" right "), Ġreg (" dest ")) Ġ% ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ% op % : Ġxor Ġ% args % ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPerform Ġa Ġbit wise ĠXOR Ġbetween Ġthe Ġvalue Ġin Ġa Ġregister Ġand Ġa Ġconstant ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠ Ġval Ġxor _ r Ġ= Ġ+ Insn (" xor _ r ", Ġop codes . create (), Ġreg (" left "), Ġreg (" right "), Ġreg (" dest ")) Ġ% ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ% op % : Ġxor Ġ% args % ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPerform Ġa Ġbit wise ĠXOR Ġbetween Ġthe Ġvalues Ġin Ġtwo Ġregisters ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĊĠĠĠ Ġval Ġnot Ġ= Ġ+ Insn (" not ", Ġop codes . create (), Ġreg (" value "), Ġreg (" dest ")) Ġ% ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ% op % : Ġnot Ġ% args % ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIn vert Ġthe Ġbits Ġof Ġa Ġregister ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĊĠĠĠ Ġval Ġpush 1 Ġ= Ġ+ Insn (" push 1 ", Ġop codes . create (), Ġreg (" value 1 ")) Ġ% ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ% op % : Ġpush Ġ% args % ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPush Ġthe Ġvalue Ġin Ġa Ġregister Ġonto Ġthe Ġstack ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠ Ġval Ġpush 2 Ġ= Ġ+ Insn (" push 2 ", Ġop codes . create (), Ġreg (" value 1 "), Ġreg (" value 2 ")) Ġ% ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ% op % : Ġpush Ġ% args % ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPush Ġthe Ġvalues Ġin Ġtwo Ġregister Ġonto Ġthe Ġstack ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠ Ġval Ġpush 3 Ġ= Ġ+ Insn (" push 3 ", Ġop codes . create (), Ġreg (" value 1 "), Ġreg (" value 2 "), Ġreg (" value 3 ")) Ġ% ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ% op % : Ġpush Ġ% args % ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPush Ġthe Ġvalues Ġin Ġthree Ġregister Ġonto Ġthe Ġstack ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠ Ġval Ġpush 4 Ġ= Ġ+ Insn (" push 4 ", Ġop codes . create (), Ġreg (" value 1 "), Ġreg (" value 2 "), Ġreg (" value 3 "), Ġreg (" value 4 ")) Ġ% ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ% op % : Ġpush Ġ% args % ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPush Ġthe Ġvalues Ġin Ġfour Ġregister Ġonto Ġthe Ġstack ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠ Ġval Ġpush 5 Ġ= Ġ+ Insn (" push 5 ", Ġop codes . create (), Ġreg (" value 1 "), Ġreg (" value 2 "), Ġreg (" value 3 "), Ġreg (" value 4 "), Ġreg (" value 5 ")) Ġ% ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ% op % : Ġpush Ġ% args % ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPush Ġthe Ġvalues Ġin Ġfive Ġregister Ġonto Ġthe Ġstack ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĊĠĠĠ Ġval Ġpop 1 Ġ= Ġ+ Insn (" pop 1 ", Ġop codes . create (), Ġreg (" dest 1 ")) Ġ% ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ% op % : Ġpop Ġ% args % ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPop Ġone Ġvalue Ġoff Ġthe Ġstack ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠ Ġval Ġpop 2 Ġ= Ġ+ Insn (" pop 2 ", Ġop codes . create (), Ġreg (" dest 1 "), Ġreg (" dest 2 ")) Ġ% ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ% op % : Ġpop Ġ% args % ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPop Ġtwo Ġvalues Ġoff Ġthe Ġstack ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠ Ġval Ġpop 3 Ġ= Ġ+ Insn (" pop 3 ", Ġop codes . create (), Ġreg (" dest 1 "), Ġreg (" dest 2 "), Ġreg (" dest 3 ")) Ġ% ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ% op % : Ġpop Ġ% args % ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPop Ġthree Ġvalues Ġoff Ġthe Ġstack ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠ Ġval Ġpop 4 Ġ= Ġ+ Insn (" pop 4 ", Ġop codes . create (), Ġreg (" dest 1 "), Ġreg (" dest 2 "), Ġreg (" dest 3 "), Ġreg (" dest 4 ")) Ġ% ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ% op % : Ġpop Ġ% args % ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPop Ġfour Ġvalues Ġoff Ġthe Ġstack ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠ Ġval Ġpop 5 Ġ= Ġ+ Insn (" pop 5 ", Ġop codes . create (), Ġreg (" dest 1 "), Ġreg (" dest 2 "), Ġreg (" dest 3 "), Ġreg (" dest 4 "), Ġreg (" dest 5 ")) Ġ% ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ% op % : Ġpop Ġ% args % ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPop Ġfive Ġvalues Ġoff Ġthe Ġstack ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĊĠĠĠ Ġval Ġpeek Ġ= Ġ+ Insn (" peek ", Ġop codes . create (), Ġreg (" dest ")) Ġ% ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ% op % : Ġpeek Ġ% args % ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠP eek Ġthe Ġvalue Ġat Ġthe Ġtop Ġof Ġthe Ġstack ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĊĠĠĠ Ġval Ġmk frame Ġ= Ġ+ Insn (" mk frame ", Ġop codes . create ()) Ġ% ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ% op % : Ġmk frame Ġ% args % ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCreate Ġa Ġstack Ġframe , Ġstoring Ġthe Ġcurrent Ġframe Ġpointer Ġimmediately Ġbefore Ġthe Ġnew Ġframe Ġpointer ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠ Ġval Ġmk frame _ keep _ imm Ġ= Ġ+ Insn (" mk frame _ keep _ imm ", Ġop codes . create (), Ġu 3 2 (" count ")) Ġ% ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ% op % : Ġmk frame Ġ% args % ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCreate Ġa Ġstack Ġframe , Ġincluding Ġthe Ġtop ĠN Ġstack Ġelements Ġin Ġthe Ġnewly Ġcreated Ġframe , Ġand ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstoring Ġthe Ġcurrent Ġframe Ġpointer Ġimmediately Ġbefore Ġthe Ġnew Ġframe Ġpointer ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠ Ġval Ġmk frame _ keep _ r Ġ= Ġ+ Insn (" mk frame _ keep _ r ", Ġop codes . create (), Ġreg (" count ")) Ġ% ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ% op % : Ġmk frame Ġ% args % ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCreate Ġa Ġstack Ġframe , Ġincluding Ġthe Ġtop ĠN Ġstack Ġelements Ġin Ġthe Ġnewly Ġcreated Ġframe , Ġand ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstoring Ġthe Ġcurrent Ġframe Ġpointer Ġimmediately Ġbefore Ġthe Ġnew Ġframe Ġpointer ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠ Ġval Ġrm frame Ġ= Ġ+ Insn (" rm frame ", Ġop codes . create ()) Ġ% ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ% op % : Ġrm frame Ġ% args % ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRemove Ġa Ġstack Ġframe , Ġrest oring Ġthe Ġold Ġframe Ġpointer ĠĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠ Ġval Ġrm frame _ keep _ imm Ġ= Ġ+ Insn (" rm frame _ keep _ imm ", Ġop codes . create (), Ġu 3 2 (" count ")) Ġ% ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ% op % : Ġrm frame Ġ% args % ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRemove Ġa Ġstack Ġframe , Ġleaving Ġthe Ġbottom ĠN Ġframe Ġelements Ġat Ġthe Ġtop Ġof Ġthe Ġprevious Ġstack Ġframe , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġand Ġrest oring Ġthe Ġold Ġframe Ġpointer ĠĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠ Ġval Ġrm frame _ keep _ r Ġ= Ġ+ Insn (" rm frame _ keep _ r ", Ġop codes . create (), Ġreg (" count ")) Ġ% ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ% op % : Ġrm frame Ġ% args % ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRemove Ġa Ġstack Ġframe , Ġleaving Ġthe Ġbottom ĠN Ġframe Ġelements Ġat Ġthe Ġtop Ġof Ġthe Ġprevious Ġstack Ġframe , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġand Ġrest oring Ġthe Ġold Ġframe Ġpointer ĠĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĊĠĠĠ Ġval Ġp call _ imm _ imm Ġ= Ġ+ Insn (" p call _ imm _ imm ", Ġop codes . create (), Ġu 3 2 (" pid "), Ġu 3 2 (" function ")) Ġ% ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ% op % : Ġp call Ġ% args % ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCall Ġinto Ġa Ġperipheral Ġdevice ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠ Ġval Ġp call _ r _ imm Ġ= Ġ+ Insn (" p call _ r _ imm ", Ġop codes . create (), Ġreg (" pid "), Ġu 3 2 (" function ")) Ġ% ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ% op % : Ġp call Ġ% args % ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCall Ġinto Ġa Ġperipheral Ġdevice ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠ Ġval Ġp call _ imm _ r Ġ= Ġ+ Insn (" p call _ imm _ r ", Ġop codes . create (), Ġu 3 2 (" pid "), Ġreg (" function ")) Ġ% ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ% op % : Ġp call Ġ% args % ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCall Ġinto Ġa Ġperipheral Ġdevice ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠ Ġval Ġp call _ r _ r Ġ= Ġ+ Insn (" p call _ r _ r ", Ġop codes . create (), Ġreg (" pid "), Ġreg (" function ")) Ġ% ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ% op % : Ġp call Ġ% args % ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCall Ġinto Ġa Ġperipheral Ġdevice ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĊĠĠĠ Ġprivate Ġval Ġinstructions Map Ġ= Ġinstructions . associate By Ġ{ Ġit . opcode Ġ} ĊĠĠĠ Ġfun Ġdecode ( opcode : ĠU Short ): ĠIn sn ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġinstructions Map [ opcode Ġand ĠIn sn . OPCODE _ MASK ] ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġoperator Ġfun ĠIn sn . unary Plus (): ĠIn sn Ġ{ ĊĠĠĠĠĠĠĠ Ġinstructions . add ( this ) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġoperator Ġfun ĠIn sn . rem ( help : ĠString ): ĠIn sn Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . help Ġ= Ġhelp ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace ("% op %", Ġthis . opcode . toString ( 1 6 ). pad Start ( 4 , Ġ' 0 ')) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace ("% args %", Ġthis . args Help ) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġclass ĠOpcode Tracker Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġopcode : ĠU Short Ġ= Ġ 0 u ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġset ĊĊĠĠĠĠĠĠĠ Ġfun Ġcreate (): ĠU Short Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġopcode ++ ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ