- case Script::CODE_MOVE_A1:
- address1 = PopAddress();
- break;
- case Script::CODE_MOVE_I0:
- integer0 = PopInt();
+
+ 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;
+ }
+ }