Преглед на файлове

Fixed jump/call address count

Before fix, jump/call immidate value to address has to be 1 lower that
actual address.
Min преди 6 години
родител
ревизия
06ff43d614
променени са 3 файла, в които са добавени 6 реда и са изтрити 6 реда
  1. 2 2
      memory/risc8_test.asm
  2. 2 2
      src/risc/controller.csv
  3. 2 2
      src/risc/controller.sv

+ 2 - 2
memory/risc8_test.asm

@@ -1,5 +1,5 @@
 b1111_0010 // 0x0000
-0x0007
+0x0008
 b1011_0000 // 0x0003 func AddAllBy1
 b1011_0100 // 0x0004
 b1011_1000 // 0x0005
@@ -11,7 +11,7 @@ COPY r2 r0   // 0x000a
 COPY r1 0x0a // 0x000b
 
 b1111_0000 // 0x000d Call AddAllBy1
-0x0002
+0x0003
 ADD  r0 r1 // 0x000f
 COPY r0 r2 // 0x0010
 

+ 2 - 2
src/risc/controller.csv

@@ -27,9 +27,9 @@
     PUSH,   ALU_NONE,  SB_NONE,         0,  SR_NONE,      0,      1,         0,SO_MEML ,  ST_SUB, PC_NONE 
      POP,   ALU_NONE,  SB_NONE,         1,  SR_MEML,      1,      0,         0,SO_MEML ,  ST_ADD, PC_NONE 
      COM,   ALU_NONE,  SB_NONE,         1,   SR_COM,      0,      0,         1, SO_COM , ST_SKIP, PC_NONE 
-    CALL,   ALU_NONE,  SB_NONE,         0,  SR_NONE,      0,      1,         0,SO_MEML ,  ST_SUB, PC_CALL 
+    CALL,   ALU_NONE,  SB_NONE,         0,  SR_NONE,      0,      1,         1,SO_MEML ,  ST_SUB, PC_CALL 
      RET,   ALU_NONE,  SB_NONE,         0,  SR_NONE,      1,      0,         2,SO_MEML ,  ST_ADD,  PC_RET 
-    JUMP,   ALU_NONE,  SB_NONE,         0,  SR_NONE,      0,      0,         0,SO_MEML , ST_NONE, PC_JUMP 
+    JUMP,   ALU_NONE,  SB_NONE,         0,  SR_NONE,      0,      0,         1,SO_MEML , ST_NONE, PC_JUMP 
     RETI,   ALU_NONE,  SB_NONE,         0,  SR_NONE,      1,      0,         2,SO_MEML ,  ST_SUB,  PC_RET 
      CLC,   ALU_NONE,  SB_NONE,         0,  SR_NONE,      0,      0,         0,SO_MEML , ST_SKIP, PC_NONE 
     SETC,   ALU_NONE,  SB_NONE,         0,  SR_NONE,      0,      0,         0,SO_MEML , ST_SKIP, PC_NONE 

+ 2 - 2
src/risc/controller.sv

@@ -447,7 +447,7 @@ module controller8(
             cdi.selr    = SR_NONE;
             mem_rd      = 0;
             mem_wr      = 1;
-            cdi.isize   = 0;
+            cdi.isize   = 1;
             cdi.selo    = SO_MEML;
             cdi.stackop = ST_SUB;
             cdi.pcop    = PC_CALL;
@@ -477,7 +477,7 @@ module controller8(
             cdi.selr    = SR_NONE;
             mem_rd      = 0;
             mem_wr      = 0;
-            cdi.isize   = 0;
+            cdi.isize   = 1;
             cdi.selo    = SO_MEML;
             cdi.stackop = ST_NONE;
             cdi.pcop    = PC_JUMP;