summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkugwa <kugwa2000@gmail.com>2016-01-18 16:31:08 +0800
committerkugwa <kugwa2000@gmail.com>2016-01-18 16:35:26 +0800
commit319b052cc343070f81aa7c61f7fa26918890cb03 (patch)
tree73e3873366c2ba678f12d31aeef08feed3859354
parente4d4fe5e44579536f3d060ad841636928d0e0bc6 (diff)
downloadcompiler2015-319b052cc343070f81aa7c61f7fa26918890cb03.tar
compiler2015-319b052cc343070f81aa7c61f7fa26918890cb03.tar.gz
compiler2015-319b052cc343070f81aa7c61f7fa26918890cb03.tar.bz2
compiler2015-319b052cc343070f81aa7c61f7fa26918890cb03.tar.lz
compiler2015-319b052cc343070f81aa7c61f7fa26918890cb03.tar.xz
compiler2015-319b052cc343070f81aa7c61f7fa26918890cb03.tar.zst
compiler2015-319b052cc343070f81aa7c61f7fa26918890cb03.zip
Change mul 4 to lsl 2
-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"