summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTing-Wei Lan <lantw44@gmail.com>2016-01-21 21:25:50 +0800
committerTing-Wei Lan <lantw44@gmail.com>2016-01-21 21:25:50 +0800
commit2d49791e5e321c4462bd9655e510f392231d25cf (patch)
tree6b5984b7bba791fecad6185287950d45049752e3
parent92d737b036d3d7ec21f930dc528bc82dc4ee671d (diff)
downloadcompiler2015-2d49791e5e321c4462bd9655e510f392231d25cf.tar
compiler2015-2d49791e5e321c4462bd9655e510f392231d25cf.tar.gz
compiler2015-2d49791e5e321c4462bd9655e510f392231d25cf.tar.bz2
compiler2015-2d49791e5e321c4462bd9655e510f392231d25cf.tar.lz
compiler2015-2d49791e5e321c4462bd9655e510f392231d25cf.tar.xz
compiler2015-2d49791e5e321c4462bd9655e510f392231d25cf.tar.zst
compiler2015-2d49791e5e321c4462bd9655e510f392231d25cf.zip
Allow using expressions as arguments of write function
-rw-r--r--src/code-generation.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/code-generation.c b/src/code-generation.c
index a0551d9..725ee54 100644
--- a/src/code-generation.c
+++ b/src/code-generation.c
@@ -380,7 +380,7 @@ static const char *call_write(CcmmcAst *id, CcmmcState *state,
return "_write_str";
} else if (arg->type_value == CCMMC_AST_VALUE_INT) {
dist = ccmmc_register_alloc(state->reg_pool, current_offset);
- load_variable(arg, state, dist, current_offset);
+ generate_expression(arg, state, dist, current_offset);
dist_reg = ccmmc_register_lock(state->reg_pool, dist);
fprintf(state->asm_output,
"\tmov\tw0, %s\n",
@@ -390,7 +390,7 @@ static const char *call_write(CcmmcAst *id, CcmmcState *state,
return "_write_int";
} else if (arg->type_value == CCMMC_AST_VALUE_FLOAT) {
dist = ccmmc_register_alloc(state->reg_pool, current_offset);
- load_variable(arg, state, dist, current_offset);
+ generate_expression(arg, state, dist, current_offset);
dist_reg = ccmmc_register_lock(state->reg_pool, dist);
fprintf(state->asm_output,
"\tfmov\ts0, %s\n",