- case Script::CODE_ADD_I1:
- integer1 += PopInt();
- break;
- case Script::CODE_ADD_V0:
- vector0 += PopVector();
- break;
- case Script::CODE_ADD_V1:
- vector1 += PopVector();
- break;
- case Script::CODE_MOD_I0:
- integer0 %= PopInt();
- break;
- case Script::CODE_MOD_I1:
- integer1 %= PopInt();
- break;
- case Script::CODE_RAND_I0:
- integer0 = std::rand();
+
+ case Script::COMMAND_MOVE:
+ if (code.reg1 >= numRegisters) {
+ break;
+ }
+ switch (code.type) {
+ case Script::TYPE_ADDRESS: {
+ void *value(code.reg2 < numRegisters ? address[code.reg2] : PopAddress());
+ address[code.reg1] = value;
+ break;
+ }
+ case Script::TYPE_INTEGER: {
+ int value(code.reg2 < numRegisters ? integer[code.reg2] : PopInt());
+ integer[code.reg1] = value;
+ break;
+ }
+ case Script::TYPE_VECTOR: {
+ Vector<int> value(code.reg2 < numRegisters ? vector[code.reg2] : PopVector());
+ vector[code.reg1] = value;
+ break;
+ }
+ }