* device/lib/pic16/Makefile.common.in: added $(MM) to fix `make clean`
[fw/sdcc] / sim / ucsim / xa.src / inst_gen.cc
index cd7f23525acd9639c8f52ab2c89a6d4f14e42201..76e39871b7e746a860ac1d73810b69c16eefa431 100644 (file)
@@ -89,19 +89,18 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
     case IREGOFF16_REG :
     {
       int offset;
-      if (operands == REG_IREGOFF8) {
+      if (operands == IREGOFF8_REG) {
         offset = (int)((char) fetch());
       } else {
         offset = (int)((short)fetch2());
       }
       if (code & 0x0800) {  /* word op */
-        t_mem addr = reg2(RI_70) + offset;
-        unsigned short wtmp, wtotal;
-        wtmp = get2(addr);
-        wtotal = FUNC2( wtmp, reg2(RI_F0) );
+        t_mem addr = reg2(RI_07) + offset;
+        unsigned short wtotal;
+        wtotal = FUNC2( get2(addr), reg2(RI_F0) );
         store2(addr, wtotal);
       } else {
-        t_mem addr = reg2(RI_70) + ((short) fetch2());
+        t_mem addr = reg2(RI_07) + offset;
         unsigned char total;
         total = FUNC1( get1(addr), reg1(RI_F0) );
         store1(addr, total);
@@ -126,7 +125,6 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
                       )
                 );
       } else {
-        int offset = (int)((short)fetch2());
         set_reg1( RI_F0,
                   FUNC1( reg1(RI_F0),
                         get1(reg2(RI_07)+offset)
@@ -173,11 +171,23 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
     break;
 
     case REG_DATA8 :
+#if 0
+      {
+        unsigned char dat = fetch();
+        unsigned char res;
+        res = FUNC1( reg1(RI_F0), dat);
+        set_reg1( RI_F0, res );
+   printf("reg_data8 code=%x dat=%x, res=%x r=%x\n", code, dat, res, reg1( RI_F0) );
+      }
+#endif
       set_reg1( RI_F0, FUNC1( reg1(RI_F0), fetch()) );
     break;
 
     case REG_DATA16 :
-      set_reg2( RI_F0, FUNC2( reg2(RI_F0), fetch2()) );
+      {
+        unsigned short dat = fetch2();
+        set_reg2( RI_F0, FUNC2( reg2(RI_F0), dat) );
+      }
     break;
 
     case IREGINC_DATA8 :