linc 0.7
Linc is a general-purpose programming language inspired by C
Loading...
Searching...
No Matches
linc::GeneratorAMD64 Class Referencefinal

Public Types

using Emitter = EmitterAMD64
 
using Variable = std::variant<std::string, std::size_t>
 

Public Member Functions

 GeneratorAMD64 (const BoundProgram *program, Target::Platform platform)
 
std::pair< std::string, bool > generateProgram ()
 
void generateDeclaration (const BoundDeclaration *declaration)
 
void generateStatement (const BoundStatement *statement)
 
void generateBlockExpression (const BoundBlockExpression *expression)
 
void generateExpression (const BoundExpression *expression)
 
void generateReturnStatement (const BoundReturnStatement *statement)
 
void generateIndexExpression (const BoundIndexExpression *expression)
 
void generateTypeExpression (const BoundTypeExpression *expression)
 
void generateConversionExpression (const BoundConversionExpression *expression)
 
void generateFunctionCallExpression (const BoundFunctionCallExpression *expression)
 
void generateExternalCallExpression (const BoundExternalCallExpression *expression)
 
void generateUnaryExpression (const BoundUnaryExpression *expression)
 
void generateWhileExpression (const BoundWhileExpression *expression)
 
void generateIfExpression (const BoundIfExpression *expression)
 
void generateLiteralExpression (const BoundLiteralExpression *expression)
 
void generateVariableDeclaration (const BoundVariableDeclaration *declaration)
 
void generateFunctionDeclaration (const BoundFunctionDeclaration *declaration)
 
void generateBinaryExpression (const BoundBinaryExpression *expression)
 
Emitter::UnaryInstruction generateConditional (const BoundExpression *expression)
 
Emitter::UnaryInstruction generateAndCompare (const BoundExpression *left, const BoundExpression *right, Emitter::UnaryInstruction jump_instruction)
 

Static Public Member Functions

static constexpr Registers::Size getRegisterOperandSize (Types::Kind primitive)
 

The documentation for this class was generated from the following file: