lvm.js

changeset 112
5318bb31b0ac
parent 110
6a6e5ef39eaf
child 113
1e49dfb8ccdc
equal deleted inserted replaced
111:cb1ef8a51da4 112:5318bb31b0ac
13 var OP_SELF = 11; 13 var OP_SELF = 11;
14 var OP_ADD = 12; 14 var OP_ADD = 12;
15 var OP_SUB = 13; 15 var OP_SUB = 13;
16 var OP_MUL = 14; 16 var OP_MUL = 14;
17 var OP_DIV = 15; 17 var OP_DIV = 15;
18 //var OP_MOD = 16; 18 var OP_MOD = 16;
19 //var OP_POW = 17; 19 var OP_POW = 17;
20 //var OP_UNM = 18; 20 var OP_UNM = 18;
21 //var OP_NOT = 19; 21 var OP_NOT = 19;
22 //VAR OP_LEN = 20; 22 //VAR OP_LEN = 20;
23 var OP_CONCAT = 21; 23 var OP_CONCAT = 21;
24 var OP_JMP = 22; 24 var OP_JMP = 22;
25 var OP_EQ = 23; 25 var OP_EQ = 23;
26 var OP_LT = 24; 26 var OP_LT = 24;
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))

mercurial