package Ġcom . elements . jvm by kotlin . instructions . comp arisons Ċ Ċ import Ġcom . elements . jvm by kotlin . instructions . base . Branch Instruction Ċ import Ġcom . elements . jvm by kotlin . instructions . base . Branch Logic Ċ import Ġcom . elements . jvm by kotlin . runtime data . Frame Ċ Ċ /** Ċ Ġ* ĠCompare Ġtwo Ġint Ċ Ġ* ĠRefer Ġto Ġ< a Ġhref =" https :// docs . oracle . com / javase / specs / jv ms / se 8 / html / jv ms - 4 . html # jv ms - 4 . 1 0 . 1 . 9 . if _ icmp _ cond "> if _ icmp </ a > Ċ Ġ* Ċ Ġ* Ġ@ author Ġhan zhang Ċ Ġ*/ Ċ class ĠIf IC mp Eq Ġ: ĠBranch Instruction () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġexecute ( frame : ĠFrame ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġvalue 2 Ġ= Ġframe . operand Stack . pop Int () ĊĠĠĠĠĠĠĠ Ġval Ġvalue 1 Ġ= Ġframe . operand Stack . pop Int () ĊĠĠĠĠĠĠĠ Ġif Ġ( value 1 Ġ== Ġvalue 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBranch Logic . branch ( frame , Ġoffset ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠIf IC mp GE Ġ: ĠBranch Instruction () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġexecute ( frame : ĠFrame ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġvalue 2 Ġ= Ġframe . operand Stack . pop Int () ĊĠĠĠĠĠĠĠ Ġval Ġvalue 1 Ġ= Ġframe . operand Stack . pop Int () ĊĠĠĠĠĠĠĠ Ġif Ġ( value 1 Ġ>= Ġvalue 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBranch Logic . branch ( frame , Ġoffset ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠIf IC mp GT Ġ: ĠBranch Instruction () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġexecute ( frame : ĠFrame ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġvalue 2 Ġ= Ġframe . operand Stack . pop Int () ĊĠĠĠĠĠĠĠ Ġval Ġvalue 1 Ġ= Ġframe . operand Stack . pop Int () ĊĠĠĠĠĠĠĠ Ġif Ġ( value 1 Ġ> Ġvalue 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBranch Logic . branch ( frame , Ġoffset ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠIf IC mp LE Ġ: ĠBranch Instruction () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġexecute ( frame : ĠFrame ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġvalue 2 Ġ= Ġframe . operand Stack . pop Int () ĊĠĠĠĠĠĠĠ Ġval Ġvalue 1 Ġ= Ġframe . operand Stack . pop Int () ĊĠĠĠĠĠĠĠ Ġif Ġ( value 1 Ġ<= Ġvalue 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBranch Logic . branch ( frame , Ġoffset ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠIf IC mp LT Ġ: ĠBranch Instruction () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġexecute ( frame : ĠFrame ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġvalue 2 Ġ= Ġframe . operand Stack . pop Int () ĊĠĠĠĠĠĠĠ Ġval Ġvalue 1 Ġ= Ġframe . operand Stack . pop Int () ĊĠĠĠĠĠĠĠ Ġif Ġ( value 1 Ġ< Ġvalue 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBranch Logic . branch ( frame , Ġoffset ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠIf IC mp NE Ġ: ĠBranch Instruction () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġexecute ( frame : ĠFrame ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġvalue 2 Ġ= Ġframe . operand Stack . pop Int () ĊĠĠĠĠĠĠĠ Ġval Ġvalue 1 Ġ= Ġframe . operand Stack . pop Int () ĊĠĠĠĠĠĠĠ Ġif Ġ( value 1 Ġ!= Ġvalue 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBranch Logic . branch ( frame , Ġoffset ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }