diff options
author | Ting-Wei Lan <lantw44@gmail.com> | 2016-01-03 17:26:31 +0800 |
---|---|---|
committer | Ting-Wei Lan <lantw44@gmail.com> | 2016-01-03 17:26:31 +0800 |
commit | 51e4eb5eff1ec8f232ac87deebe4cb3818c05cca (patch) | |
tree | 82f99f9ec67b2a399d3f17a8603b783fa03370f3 /src | |
parent | c25298fa81689b42dd52a81b5a67ca457fa07dcf (diff) | |
download | compiler2015-51e4eb5eff1ec8f232ac87deebe4cb3818c05cca.tar compiler2015-51e4eb5eff1ec8f232ac87deebe4cb3818c05cca.tar.gz compiler2015-51e4eb5eff1ec8f232ac87deebe4cb3818c05cca.tar.bz2 compiler2015-51e4eb5eff1ec8f232ac87deebe4cb3818c05cca.tar.lz compiler2015-51e4eb5eff1ec8f232ac87deebe4cb3818c05cca.tar.xz compiler2015-51e4eb5eff1ec8f232ac87deebe4cb3818c05cca.tar.zst compiler2015-51e4eb5eff1ec8f232ac87deebe4cb3818c05cca.zip |
Fix syntax error when accessing global variables
Diffstat (limited to 'src')
-rw-r--r-- | src/code-generation.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/code-generation.c b/src/code-generation.c index 78dd8a6..8aa353d 100644 --- a/src/code-generation.c +++ b/src/code-generation.c @@ -91,7 +91,8 @@ static inline void load_variable(CcmmcAst *id, CcmmcState *state, const char *r) // TODO: array if (ccmmc_symbol_attr_is_global(&var_sym->attr)) { fprintf(state->asm_output, - "\tldr\t%s, %s\n", r, var_name); + "\tadr\t" REG_TMP ", %s\n" + "\tldr\t%s, [" REG_TMP "]\n", var_name, r); } else { if (safe_immediate(var_sym->attr.addr)) { fprintf(state->asm_output, @@ -113,7 +114,8 @@ static inline void store_variable(CcmmcAst *id, CcmmcState *state, const char *r // TODO: array if (ccmmc_symbol_attr_is_global(&var_sym->attr)) { fprintf(state->asm_output, - "\tstr\t%s, %s\n", r, var_name); + "\tadr\t" REG_TMP ", %s\n" + "\tstr\t%s, [" REG_TMP "]\n", var_name, r); } else { if (safe_immediate(var_sym->attr.addr)) { fprintf(state->asm_output, |