lvm.js

changeset 81
1deed5894ff6
parent 80
beb0bb936aca
child 82
72fe2316bd67
equal deleted inserted replaced
80:beb0bb936aca 81:1deed5894ff6
12 var OP_NEWTABLE = 10; 12 var OP_NEWTABLE = 10;
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_JMP = 22; 16 var OP_JMP = 22;
17 var OP_EQ = 23;
17 var OP_LT = 24; 18 var OP_LT = 24;
18 var OP_TEST = 26; 19 var OP_TEST = 26;
19 var OP_TESTSET = 27; 20 var OP_TESTSET = 27;
20 var OP_CALL = 28; 21 var OP_CALL = 28;
21 var OP_RETURN = 30; 22 var OP_RETURN = 30;
561 frame.reg[INS_A(instruction)] = RB; 562 frame.reg[INS_A(instruction)] = RB;
562 break; 563 break;
563 case OP_JMP: 564 case OP_JMP:
564 frame.pc+=INS_sBx(instruction); 565 frame.pc+=INS_sBx(instruction);
565 break; 566 break;
567 case OP_EQ:
568 var A = INS_A(instruction);
569 var RB = RK(frame, INS_B(instruction));
570 var RC = RK(frame, INS_C(instruction));
571 if(RB.equals(RC) != (A!=0))
572 frame.pc++;
573 break;
566 case OP_ADD: 574 case OP_ADD:
567 var RB = RK(frame, INS_B(instruction)); 575 var RB = RK(frame, INS_B(instruction));
568 var RC = RK(frame, INS_C(instruction)); 576 var RC = RK(frame, INS_C(instruction));
569 frame.reg[INS_A(instruction)] = RB.add(RC); 577 frame.reg[INS_A(instruction)] = RB.add(RC);
570 break; 578 break;

mercurial