diff options
author | kugwa <kugwa2000@gmail.com> | 2016-01-02 20:45:51 +0800 |
---|---|---|
committer | kugwa <kugwa2000@gmail.com> | 2016-01-02 20:45:51 +0800 |
commit | bc85605c978e7e5a6d018fea069b9b2de507a108 (patch) | |
tree | 176833199efd0b68563e42905effae126362ef30 /src/code-generation.c | |
parent | 5268c4c6dceedf3df1c3e54969da6a0b248e79b9 (diff) | |
download | compiler2015-bc85605c978e7e5a6d018fea069b9b2de507a108.tar.gz compiler2015-bc85605c978e7e5a6d018fea069b9b2de507a108.tar.zst compiler2015-bc85605c978e7e5a6d018fea069b9b2de507a108.zip |
Handle function calls in expr
Diffstat (limited to 'src/code-generation.c')
-rw-r--r-- | src/code-generation.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/code-generation.c b/src/code-generation.c index 4b10015..5b95a74 100644 --- a/src/code-generation.c +++ b/src/code-generation.c @@ -148,7 +148,10 @@ static void generate_expression(CcmmcAst *expr, CcmmcState *state, if (expr->type_node == CCMMC_AST_NODE_STMT && expr->value_stmt.kind == CCMMC_KIND_STMT_FUNCTION_CALL) { - // TODO: function call + ccmmc_register_caller_save(state->reg_pool); + fprintf(state->asm_output, "\tbl\t%s\n", expr->child->value_id.name); + ccmmc_register_caller_load(state->reg_pool); + fprintf(state->asm_output, "\tmov\t%s, w0\n", result); assert(false); } |