diff --git a/src/execute.c b/src/execute.c index 837dd0c..ef5763b 100644 --- a/src/execute.c +++ b/src/execute.c @@ -74,7 +74,9 @@ static dword readRegister(Machine *state, a64inst_regSpecifier reg, a64inst_regT // and truncating the value being written when it can't fit in the specified register static void writeRegister(Machine *state, a64inst_regSpecifier reg, a64inst_regType regType, dword value) { assert(reg <= REGISTER_COUNT); - state->registers[reg] = truncateValue(value, regType); + if (reg != ZERO_REGISTER) { + state->registers[reg] = truncateValue(value, regType); + } } // Returns the position of the MSB of the given register type