while (???)
{
instr current;current = codespace[ip]; // Fetch
ip++; // Increment IPswitch (current.op)
{
case +1: // Do Add
dataspace[current.dst] = dataspace[current.src1]
+ dataspace[current.src2];
break;
case -1: // Do Subtract
case +2: // Do Multiply
case -2: // Do Divide
case +3: // Do Exponent
dataspace[current.dst] = pow(dataspace[current.src1]
,dataspace[current.src2]);
case -3: // Do Root
case +4: // If src1 == src2 then jump to dst (cs)
if (dataspace[current.src1] == dataspace[current.src2])
ip = current.dst;
case -4: // src1 != src2
case +5: // src1 >= src2
case -5: // src1 < src2
}
}
// second part{
case +1: // Do Add x + y -> z
dataspace[current.dst] = dataspace[current.src1]
+ dataspace[current.src2];
break;case +6: // x[y] -> z
dataspace[current.dst] = dataspace[current.src1 +
dataspace[current.src2]];
break;
case -6: // x -> y[z]
}
// third part
switch (current.op)
{case +7: // Increment and Test
dataspace[current.src1]++;
if (dataspace[current.src1] < dataspace[current.src2])
ip = current.dst;
break;
case -7: // Label
// Save code address during load.
// Does nothing as an instruction.
break;
case +8: // Read
cin >> dataspace[current.dst];
break;
case -8: // Print
cout << dataspace[current.src1] << endl;
break;
case +9: // Halt
return 0;
}

WhatsApp us