|
@@ -198,6 +198,13 @@ static void sStore(Script* sc, int length) {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+static void sStoreRef(Script* sc, int length) {
|
|
|
+ int address = -1;
|
|
|
+ if(sPopInt(sc, &address) && sCheckAddress(sc, address, length)) {
|
|
|
+ sPop(sc, sc->stack + address, length);
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
static void sNot(Script* sc) {
|
|
|
bool value = false;
|
|
|
if(sPopBool(sc, &value)) {
|
|
@@ -327,6 +334,7 @@ static void sConsumeInstruction(Script* sc) {
|
|
|
CASE_TYPE(BOOL, Bool, bool);
|
|
|
CASE_TYPE(FLOAT, Float, float);
|
|
|
case OP_LOAD_INT_REF: sLoadIntRef(sc); break;
|
|
|
+ case OP_STORE_INT_REF: sStoreRef(sc, sizeof(int)); break;
|
|
|
case OP_NOTHING: break;
|
|
|
case OP_PUSH_INT: PUSH_CONSTANT(int, Int); break;
|
|
|
case OP_PUSH_FLOAT: PUSH_CONSTANT(float, Float); break;
|