summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/code-generation.c15
1 files changed, 4 insertions, 11 deletions
diff --git a/src/code-generation.c b/src/code-generation.c
index e92d0d2..7d09368 100644
--- a/src/code-generation.c
+++ b/src/code-generation.c
@@ -113,21 +113,14 @@ static void calc_array_offset(CcmmcAst *ref, CcmmcSymbolType *type,
ccmmc_register_unlock(state->reg_pool, index);
ccmmc_register_unlock(state->reg_pool, mul);
}
+ ccmmc_register_free(state->reg_pool, index, current_offset);
+ ccmmc_register_free(state->reg_pool, mul, current_offset);
result_reg = ccmmc_register_lock(state->reg_pool, result);
- index_reg = ccmmc_register_lock(state->reg_pool, index);
- mul_reg = ccmmc_register_lock(state->reg_pool, mul);
fprintf(state->asm_output,
- "\tmov\t%s, #4\n"
- "\tmul\t%s, %s, %s\n",
- mul_reg,
- result_reg, result_reg, mul_reg);
+ "\tlsl\t%s, %s, #2\n",
+ result_reg, result_reg);
ccmmc_register_unlock(state->reg_pool, result);
- ccmmc_register_unlock(state->reg_pool, index);
- ccmmc_register_unlock(state->reg_pool, mul);
-
- ccmmc_register_free(state->reg_pool, index, current_offset);
- ccmmc_register_free(state->reg_pool, mul, current_offset);
}
#define REG_TMP "x9"