diff options
author | kugwa <kugwa2000@gmail.com> | 2016-01-18 16:31:08 +0800 |
---|---|---|
committer | kugwa <kugwa2000@gmail.com> | 2016-01-18 16:35:26 +0800 |
commit | 319b052cc343070f81aa7c61f7fa26918890cb03 (patch) | |
tree | 73e3873366c2ba678f12d31aeef08feed3859354 /src | |
parent | e4d4fe5e44579536f3d060ad841636928d0e0bc6 (diff) | |
download | compiler2015-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
Diffstat (limited to 'src')
-rw-r--r-- | src/code-generation.c | 15 |
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" |