Skip to content

Commit 29471e9

Browse files
committed
Fix bugs in vectorized regint operations in binary VMs.
1 parent 033e973 commit 29471e9

File tree

2 files changed

+7
-8
lines changed

2 files changed

+7
-8
lines changed

GC/Program.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ BreakType Program::execute(Processor<T>& Proc, U& dynamic_memory,
115115
auto& instruction = p[Proc.PC++];
116116
switch (instruction.get_opcode())
117117
{
118-
#define X(NAME, CODE) case NAME: CODE; break;
118+
#define X(NAME, CODE) case NAME: {CODE;} break;
119119
INSTRUCTIONS
120120
#undef X
121121
default:

GC/instructions.h

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,7 @@
3535

3636
#define MMS processor.memories.MS
3737
#define MMC processor.memories.MC
38-
#define MID MACH->MI[IMM]
39-
#define MII MACH->MI[PI1.get()]
38+
#define MMI MACH->MI
4039

4140
#define BIT_INSTRUCTIONS \
4241
X(XORS, T::xors(PROC, EXTRA)) \
@@ -106,7 +105,7 @@
106105
X(PRINTCHR, PROC.print_chr(IMM)) \
107106
X(PRINTSTR, PROC.print_str(IMM)) \
108107
X(PRINTFLOATPREC, PROC.print_float_prec(IMM)) \
109-
X(LDINT, I0 = int(IMM)) \
108+
X(LDINT, auto d = &I0; for (int i = 0; i < SIZE; i++) *d++ = int(IMM)) \
110109
X(ADDINT, I0 = PI1 + PI2) \
111110
X(SUBINT, I0 = PI1 - PI2) \
112111
X(MULINT, I0 = PI1 * PI2) \
@@ -121,10 +120,10 @@
121120
X(GTC, I0 = PI1 > PI2) \
122121
X(EQC, I0 = PI1 == PI2) \
123122
X(JMPI, PROC.PC += I0) \
124-
X(LDMINT, I0 = MID) \
125-
X(STMINT, MID = I0) \
126-
X(LDMINTI, I0 = MII) \
127-
X(STMINTI, MII = I0) \
123+
X(LDMINT, PROC.mem_op(SIZE, PROC.I, MMI, R0, IMM)) \
124+
X(STMINT, PROC.mem_op(SIZE, MMI, PROC.I, IMM, R0)) \
125+
X(LDMINTI, PROC.mem_op(SIZE, PROC.I, MMI, R0, Ci[REG1])) \
126+
X(STMINTI, PROC.mem_op(SIZE, MMI, PROC.I, Ci[REG1], R0)) \
128127
X(PUSHINT, PROC.pushi(I0.get())) \
129128
X(POPINT, PROC.popi(I0)) \
130129
X(MOVINT, I0 = PI1) \

0 commit comments

Comments
 (0)