4IFS2-COMP-PLD/compiler/CodeGenVisitor.cpp
2026-03-02 11:11:40 +01:00

33 lines
666 B
C++

#include "CodeGenVisitor.h"
antlrcpp::Any CodeGenVisitor::visitProg(ifccParser::ProgContext *ctx)
{
#ifdef __APPLE__
std::cout<< ".globl _main\n" ;
std::cout<< " _main: \n" ;
#else
std::cout<< ".globl main\n" ;
std::cout<< " main: \n" ;
#endif
this->visit( ctx->return_stmt() );
std::cout << " ret\n";
return 0;
}
antlrcpp::Any CodeGenVisitor::visitReturn_stmt(ifccParser::Return_stmtContext *ctx)
{
int retval = stoi(ctx->CONST()->getText());
#ifdef __APPLE__
std::cout << " mov w0, #"<<retval<<"\n" ;
#else
std::cout << " movl $"<<retval<<", %eax\n" ;
#endif
return 0;
}