diff options
author | Ting-Wei Lan <lantw44@gmail.com> | 2016-01-21 21:25:50 +0800 |
---|---|---|
committer | Ting-Wei Lan <lantw44@gmail.com> | 2016-01-21 21:25:50 +0800 |
commit | 2d49791e5e321c4462bd9655e510f392231d25cf (patch) | |
tree | 6b5984b7bba791fecad6185287950d45049752e3 /src | |
parent | 92d737b036d3d7ec21f930dc528bc82dc4ee671d (diff) | |
download | compiler2015-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
Diffstat (limited to 'src')
-rw-r--r-- | src/code-generation.c | 4 |
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", |