|
@@ -16,3 +16,26 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
#endif
|
|
#endif
|
|
|
|
|
+--- rarvm.cpp.orig 2003-05-15 10:37:58.000000000 +0200
|
|
|
|
|
++++ rarvm.cpp 2003-07-28 14:36:01.000000000 +0200
|
|
|
|
|
+@@ -376,16 +376,16 @@
|
|
|
|
|
+ case VM_PUSHA:
|
|
|
|
|
+ {
|
|
|
|
|
+ const int RegCount=sizeof(R)/sizeof(R[0]);
|
|
|
|
|
+- for (int I=0,SP=R[7]-4;I<RegCount;I++,SP-=4)
|
|
|
|
|
+- SET_VALUE(false,(uint *)&Mem[SP & VM_MEMMASK],R[I]);
|
|
|
|
|
++ for (int I=0,SPTR=R[7]-4;I<RegCount;I++,SPTR-=4)
|
|
|
|
|
++ SET_VALUE(false,(uint *)&Mem[SPTR & VM_MEMMASK],R[I]);
|
|
|
|
|
+ R[7]-=RegCount*4;
|
|
|
|
|
+ }
|
|
|
|
|
+ break;
|
|
|
|
|
+ case VM_POPA:
|
|
|
|
|
+ {
|
|
|
|
|
+ const int RegCount=sizeof(R)/sizeof(R[0]);
|
|
|
|
|
+- for (uint I=0,SP=R[7];I<RegCount;I++,SP+=4)
|
|
|
|
|
+- R[7-I]=GET_VALUE(false,(uint *)&Mem[SP & VM_MEMMASK]);
|
|
|
|
|
++ for (uint I=0,SPTR=R[7];I<RegCount;I++,SPTR+=4)
|
|
|
|
|
++ R[7-I]=GET_VALUE(false,(uint *)&Mem[SPTR & VM_MEMMASK]);
|
|
|
|
|
+ }
|
|
|
|
|
+ break;
|
|
|
|
|
+ case VM_PUSHF:
|