diff options
Diffstat (limited to 'c_compiler/include')
-rw-r--r-- | c_compiler/include/bindings.hpp | 5 | ||||
-rw-r--r-- | c_compiler/include/expression.hpp | 12 |
2 files changed, 17 insertions, 0 deletions
diff --git a/c_compiler/include/bindings.hpp b/c_compiler/include/bindings.hpp index 983a10d..5dd1e1f 100644 --- a/c_compiler/include/bindings.hpp +++ b/c_compiler/include/bindings.hpp @@ -25,16 +25,21 @@ class VariableStackBindings private: std::map<std::string, DeclarationData> bindings; int32_t stack_counter; + int8_t current_register; public: VariableStackBindings(); void insertBinding(std::string id, TypePtr type, int32_t stack_position); void increaseStackPosition(); + void resetRegister(); + void increaseRegister(); int32_t getCurrentStackPosition() const; int32_t getStackPosition(const std::string& id) const; + int8_t getCurrentRegister() const; + bool bindingExists(const std::string& id) const; }; diff --git a/c_compiler/include/expression.hpp b/c_compiler/include/expression.hpp index df95a1e..a4939a9 100644 --- a/c_compiler/include/expression.hpp +++ b/c_compiler/include/expression.hpp @@ -54,6 +54,18 @@ public: }; +class MultiplicativeExpression : public OperationExpression +{ +private: + std::string operation; + +public: + MultiplicativeExpression(Expression* _lhs, const std::string& _operation, Expression* _rhs); + + virtual VariableStackBindings printasm(VariableStackBindings bindings) const; +}; + + class Identifier : public Expression { private: |