628 case OP_DIV: |
628 case OP_DIV: |
629 var RB = RK(frame, INS_B(instruction)); |
629 var RB = RK(frame, INS_B(instruction)); |
630 var RC = RK(frame, INS_C(instruction)); |
630 var RC = RK(frame, INS_C(instruction)); |
631 frame.reg[INS_A(instruction)] = new LValue(this, "number", RB.value / RC.value); |
631 frame.reg[INS_A(instruction)] = new LValue(this, "number", RB.value / RC.value); |
632 break; |
632 break; |
|
633 case OP_MOD: |
|
634 var RB = RK(frame, INS_B(instruction)); |
|
635 var RC = RK(frame, INS_C(instruction)); |
|
636 frame.reg[INS_A(instruction)] = new LValue(this, "number", RB.value % RC.value); |
|
637 break; |
|
638 case OP_POW: |
|
639 var RB = RK(frame, INS_B(instruction)); |
|
640 var RC = RK(frame, INS_C(instruction)); |
|
641 frame.reg[INS_A(instruction)] = new LValue(this, "number", Math.pow(RB.value, RC.value)); |
|
642 break; |
|
643 case OP_UNM: |
|
644 var RB = frame.reg[INS_B(instruction)]; |
|
645 frame.reg[INS_A(instruction)] = new LValue(this, "number", -RB.value); |
|
646 break; |
|
647 case OP_NOT: |
|
648 var RB = frame.reg[INS_B(instruction)]; |
|
649 frame.reg[INS_A(instruction)] = new LValue(this, "boolean", !RB.truth()); |
|
650 break; |
633 case OP_EQ: |
651 case OP_EQ: |
634 var A = INS_A(instruction); |
652 var A = INS_A(instruction); |
635 var RB = RK(frame, INS_B(instruction)); |
653 var RB = RK(frame, INS_B(instruction)); |
636 var RC = RK(frame, INS_C(instruction)); |
654 var RC = RK(frame, INS_C(instruction)); |
637 if(RB.equals(RC) != (A!=0)) |
655 if(RB.equals(RC) != (A!=0)) |