lvm.js

changeset 101
f1247747f025
parent 100
d20586b6104c
child 102
7bf985fd9e03
equal deleted inserted replaced
100:d20586b6104c 101:f1247747f025
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_DIV = 15; 16 var OP_DIV = 15;
17 var OP_CONCAT = 21;
17 var OP_JMP = 22; 18 var OP_JMP = 22;
18 var OP_EQ = 23; 19 var OP_EQ = 23;
19 var OP_LT = 24; 20 var OP_LT = 24;
20 var OP_LE = 25; 21 var OP_LE = 25;
21 var OP_TEST = 26; 22 var OP_TEST = 26;
569 frame.reg[INS_A(instruction)] = RB; 570 frame.reg[INS_A(instruction)] = RB;
570 break; 571 break;
571 case OP_JMP: 572 case OP_JMP:
572 frame.pc+=INS_sBx(instruction); 573 frame.pc+=INS_sBx(instruction);
573 break; 574 break;
575 case OP_CONCAT:
576 var A = INS_A(instruction);
577 var B = INS_B(instruction);
578 var C = INS_C(instruction);
579 var values = [];
580 for(var i = B; i<=C; i++)
581 values.push(frame.reg[i].value);
582 frame.reg[A] = new LValue(this, "string", values.join());
574 case OP_ADD: 583 case OP_ADD:
575 var RB = RK(frame, INS_B(instruction)); 584 var RB = RK(frame, INS_B(instruction));
576 var RC = RK(frame, INS_C(instruction)); 585 var RC = RK(frame, INS_C(instruction));
577 frame.reg[INS_A(instruction)] = RB.add(RC); 586 frame.reg[INS_A(instruction)] = RB.add(RC);
578 break; 587 break;

mercurial