Stack allocate arrays
This commit is contained in:
@@ -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)
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user