aboutsummaryrefslogtreecommitdiffstats
path: root/c_compiler/include/function.hpp
diff options
context:
space:
mode:
authorYann Herklotz <ymherklotz@gmail.com>2017-03-16 18:37:50 +0000
committerYann Herklotz <ymherklotz@gmail.com>2017-03-16 18:37:50 +0000
commitf7b531ebaaa784a0dcebb877ec7b831b324f3510 (patch)
treeacc733a0ac5732799e6d0cc47a30da31e96e57fd /c_compiler/include/function.hpp
parent9ab7f5825f225cb42a6a0e8950f841a10db82f1b (diff)
downloadCompiler-f7b531ebaaa784a0dcebb877ec7b831b324f3510.tar.gz
Compiler-f7b531ebaaa784a0dcebb877ec7b831b324f3510.zip
Check if function calls work
Diffstat (limited to 'c_compiler/include/function.hpp')
-rw-r--r--c_compiler/include/function.hpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/c_compiler/include/function.hpp b/c_compiler/include/function.hpp
index f049577..9080699 100644
--- a/c_compiler/include/function.hpp
+++ b/c_compiler/include/function.hpp
@@ -19,15 +19,19 @@ class Function : public Node {
protected:
TypePtr type_;
std::string id_;
- DeclarationPtr parameter_list_;
StatementPtr statement_;
+ DeclarationPtr parameter_list_;
public:
- Function(const std::string& id, Declaration* parameter_list, Statement* statement);
+ Function(const std::string& id, Statement* statement, Declaration* parameter_list = nullptr);
virtual void print() const;
virtual void printXml() const;
virtual VariableStackBindings printAsm(VariableStackBindings bindings) const;
+
+ void printParameterAsm(VariableStackBindings& bindings, unsigned& stack_offset,
+ unsigned& frame_offset) const;
+ void countParameters(unsigned& parameter_count) const;
};