From ee640ae7a81f1b71f0842795136b1544fefa96d3 Mon Sep 17 00:00:00 2001 From: nub31 Date: Thu, 30 Jan 2025 18:57:10 +0100 Subject: [PATCH] Stack allocate arrays --- Nub.Lang/Nub.Lang/Backend/Custom/Generator.cs | 14 +++----------- input/program.nub | 4 ++-- 2 files changed, 5 insertions(+), 13 deletions(-) diff --git a/Nub.Lang/Nub.Lang/Backend/Custom/Generator.cs b/Nub.Lang/Nub.Lang/Backend/Custom/Generator.cs index 852191b..eb2f730 100644 --- a/Nub.Lang/Nub.Lang/Backend/Custom/Generator.cs +++ b/Nub.Lang/Nub.Lang/Backend/Custom/Generator.cs @@ -371,17 +371,9 @@ public class Generator private void GenerateArrayInitializer(ArrayInitializerNode arrayInitializer, LocalFunc func) { - _builder.AppendLine($""" - mov rax, 9 - mov rdi, 0 - mov rsi, {8 + arrayInitializer.Length * 8} - mov rdx, 3 - mov r10, 34 - mov r8, -1 - mov r9, 0 - syscall - mov QWORD [rax], {arrayInitializer.Length} - """); + _builder.AppendLine($" sub rsp, {8 + arrayInitializer.Length * 8}"); + _builder.AppendLine(" mov rax, rsp"); + _builder.AppendLine($" mov QWORD [rsp], {arrayInitializer.Length}"); } private void GenerateBinaryExpression(BinaryExpressionNode binaryExpression, LocalFunc func) diff --git a/input/program.nub b/input/program.nub index 4441101..116925b 100644 --- a/input/program.nub +++ b/input/program.nub @@ -5,8 +5,8 @@ func main() { println(some_string); let some_array = new Array(2); - some_array[1] = 1; - some_array[2] = 2; + some_array[1] = 123; + some_array[2] = 124; let i = 1;