aboutsummaryrefslogtreecommitdiffstats
path: root/c_compiler/src/bindings.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'c_compiler/src/bindings.cpp')
-rw-r--r--c_compiler/src/bindings.cpp39
1 files changed, 17 insertions, 22 deletions
diff --git a/c_compiler/src/bindings.cpp b/c_compiler/src/bindings.cpp
index 80375e7..ba3fdfd 100644
--- a/c_compiler/src/bindings.cpp
+++ b/c_compiler/src/bindings.cpp
@@ -6,63 +6,58 @@
// VariableStackBindings definition
VariableStackBindings::VariableStackBindings()
- : stack_counter(4), current_register(2)
+ : stack_counter_(4), expression_stack_(-4)
{}
-void VariableStackBindings::insertBinding(std::string id, TypePtr type, int32_t stack_position)
+void VariableStackBindings::insertBinding(std::string id, TypePtr type, int stack_position)
{
DeclarationData decl_data;
decl_data.type = type;
decl_data.stack_position = stack_position;
- bindings.insert(std::pair<std::string, DeclarationData>(id, decl_data));
+ bindings_.insert(std::pair<std::string, DeclarationData>(id, decl_data));
}
void VariableStackBindings::increaseStackPosition()
{
- stack_counter += 4;
+ stack_counter_ += 4;
}
-void VariableStackBindings::resetRegister()
+void VariableStackBindings::resetExpressionStack()
{
- current_register = 2;
+ expression_stack_ = -4;
}
-void VariableStackBindings::increaseRegister()
+void VariableStackBindings::nextExpressionStackPosition()
{
- if(current_register == 15)
- current_register = 24;
- else if(current_register == 25)
- std::cerr << "Error : cannot allocate more registers" << std::endl;
- else
- current_register++;
+ expression_stack_ -= 4;
}
-int32_t VariableStackBindings::getCurrentStackPosition() const
+int VariableStackBindings::currentStackPosition() const
{
- return stack_counter;
+ return stack_counter_;
}
-int32_t VariableStackBindings::getStackPosition(const std::string &id) const
+int VariableStackBindings::stackPosition(const std::string &id) const
{
- auto binding = bindings.find(id);
+ auto binding = bindings_.find(id);
- if(binding != bindings.end())
+ if(binding != bindings_.end())
return (*binding).second.stack_position;
else return 0;
}
-int8_t VariableStackBindings::getCurrentRegister() const
+unsigned VariableStackBindings::currentExpressionStackPosition() const
{
- return current_register;
+ return expression_stack_;
}
bool VariableStackBindings::bindingExists(const std::string &id) const
{
- auto binding = bindings.find(id);
+ auto binding = bindings_.find(id);
- if(binding == bindings.end())
+ if(binding == bindings_.end())
return false;
else