|
| CodeGenerator * | codegen_create (const char *output_filename) |
| void | codegen_destroy (CodeGenerator *codegen) |
| void | codegen_emit (CodeGenerator *codegen, const char *format,...) |
| char * | codegen_new_label (CodeGenerator *codegen) |
| char * | codegen_new_temp (CodeGenerator *codegen) |
| bool | codegen_generate (CodeGenerator *codegen, ASTNode *ast) |
| void | codegen_program (CodeGenerator *codegen, ASTNode *node) |
| void | codegen_function_declaration (CodeGenerator *codegen, ASTNode *node) |
| void | codegen_variable_declaration (CodeGenerator *codegen, ASTNode *node) |
| void | codegen_statement (CodeGenerator *codegen, ASTNode *node) |
| void | codegen_compound_statement (CodeGenerator *codegen, ASTNode *node) |
| void | codegen_expression_statement (CodeGenerator *codegen, ASTNode *node) |
| void | codegen_return_statement (CodeGenerator *codegen, ASTNode *node) |
| void | codegen_if_statement (CodeGenerator *codegen, ASTNode *node) |
| void | codegen_while_statement (CodeGenerator *codegen, ASTNode *node) |
| void | codegen_for_statement (CodeGenerator *codegen, ASTNode *node) |
| void | codegen_expression (CodeGenerator *codegen, ASTNode *node) |
| void | codegen_binary_expression (CodeGenerator *codegen, ASTNode *node) |
| void | codegen_unary_expression (CodeGenerator *codegen, ASTNode *node) |
| void | codegen_call_expression (CodeGenerator *codegen, ASTNode *node) |
| void | codegen_identifier (CodeGenerator *codegen, ASTNode *node) |
| void | codegen_number (CodeGenerator *codegen, ASTNode *node) |
| void | codegen_string (CodeGenerator *codegen, ASTNode *node) |
| void | codegen_assignment (CodeGenerator *codegen, ASTNode *node) |
Code generation module for KCC compiler.
- Author
- KCC Development Team
- Version
- 1.10.0
- Date
- 2024
This module implements code generation for the KCC compiler, supporting multiple target architectures (ARM64 and x86-64). It translates Abstract Syntax Tree (AST) nodes into native assembly code for the target platform.
Architecture Support
- ARM64 (Apple Silicon): Modern ARM 64-bit architecture
- x86-64 (Intel/AMD): Traditional 64-bit x86 architecture
The code generator automatically detects the target architecture at compile time and generates appropriate assembly code using platform-specific instructions, registers, and calling conventions.
Features
- Multi-architecture code generation
- Function call support with proper calling conventions
- Arithmetic and logical operations
- Control flow (if/else, loops)
- Variable storage and retrieval
- Label generation for jumps and branches
Usage Example
if (codegen_generate(codegen, ast_root)) {
printf("Code generation successful\n");
}
codegen_destroy(codegen);
Definition in file codegen.c.