...
This commit is contained in:
@@ -28,8 +28,6 @@ var moduleRepository = new ModuleRepository(syntaxTrees);
|
||||
|
||||
var definitions = new List<DefinitionNode>();
|
||||
|
||||
var referencedStructTypes = new HashSet<NubStructType>();
|
||||
|
||||
foreach (var syntaxTree in syntaxTrees)
|
||||
{
|
||||
var typeChecker = new TypeChecker(syntaxTree, moduleRepository);
|
||||
@@ -37,11 +35,6 @@ foreach (var syntaxTree in syntaxTrees)
|
||||
|
||||
definitions.AddRange(typeChecker.Definitions);
|
||||
diagnostics.AddRange(typeChecker.Diagnostics);
|
||||
|
||||
foreach (var structType in typeChecker.ReferencedStructTypes)
|
||||
{
|
||||
referencedStructTypes.Add(structType);
|
||||
}
|
||||
}
|
||||
|
||||
foreach (var diagnostic in diagnostics)
|
||||
@@ -56,7 +49,7 @@ if (diagnostics.Any(diagnostic => diagnostic.Severity == DiagnosticSeverity.Erro
|
||||
|
||||
Directory.CreateDirectory(".build");
|
||||
|
||||
var generator = new Generator(definitions, referencedStructTypes);
|
||||
var generator = new Generator(definitions);
|
||||
var c = generator.Emit();
|
||||
var cFilePath = Path.Combine(".build", "out.c");
|
||||
|
||||
@@ -91,10 +84,10 @@ if (moduleRepository.Modules().TryGetValue("main", out var mainModule))
|
||||
.text
|
||||
.globl _start
|
||||
_start:
|
||||
mov rdi, [rsp + 8] # Pass stack pointer to main (argv-like)
|
||||
mov rdi, rsp # Pass stack pointer to main (length + cstring pointers)
|
||||
call {mainFunction.ExternSymbol}
|
||||
mov rdi, rax # Move return value into rdi
|
||||
mov rax, 60 # syscall: exit
|
||||
mov rdi, rax # Move return value into rdi
|
||||
mov rax, 60 # syscall: exit
|
||||
syscall
|
||||
|
||||
""";
|
||||
|
||||
Reference in New Issue
Block a user