Stack allocate arrays

This commit is contained in:
nub31
2025-01-30 18:57:10 +01:00
parent a81d7939ba
commit ee640ae7a8
2 changed files with 5 additions and 13 deletions

View File

@@ -371,17 +371,9 @@ public class Generator
private void GenerateArrayInitializer(ArrayInitializerNode arrayInitializer, LocalFunc func) private void GenerateArrayInitializer(ArrayInitializerNode arrayInitializer, LocalFunc func)
{ {
_builder.AppendLine($""" _builder.AppendLine($" sub rsp, {8 + arrayInitializer.Length * 8}");
mov rax, 9 _builder.AppendLine(" mov rax, rsp");
mov rdi, 0 _builder.AppendLine($" mov QWORD [rsp], {arrayInitializer.Length}");
mov rsi, {8 + arrayInitializer.Length * 8}
mov rdx, 3
mov r10, 34
mov r8, -1
mov r9, 0
syscall
mov QWORD [rax], {arrayInitializer.Length}
""");
} }
private void GenerateBinaryExpression(BinaryExpressionNode binaryExpression, LocalFunc func) private void GenerateBinaryExpression(BinaryExpressionNode binaryExpression, LocalFunc func)

View File

@@ -5,8 +5,8 @@ func main() {
println(some_string); println(some_string);
let some_array = new Array<int64>(2); let some_array = new Array<int64>(2);
some_array[1] = 1; some_array[1] = 123;
some_array[2] = 2; some_array[2] = 124;
let i = 1; let i = 1;