Add alloca function (stack allocation)

This commit is contained in:
Kiril Kovachev 2025-01-24 18:49:07 +00:00
parent 48f1f2fa77
commit 4057ac4bcc

43
alloca.S Normal file
View File

@ -0,0 +1,43 @@
.intel_syntax noprefix
.macro alloca size
sub rsp, \size
.endm
.text
.globl _start
_start:
# Could just use push, but this also works.
alloca 16
mov byte ptr [rsp+15], 10
mov byte ptr [rsp+14], 33
mov byte ptr [rsp+13], 100
mov byte ptr [rsp+12], 108
mov byte ptr [rsp+11], 114
mov byte ptr [rsp+10], 111
mov byte ptr [rsp+9], 119
mov byte ptr [rsp+8], 32
mov byte ptr [rsp+7], 44
mov byte ptr [rsp+6], 111
mov byte ptr [rsp+5], 108
mov byte ptr [rsp+4], 108
mov byte ptr [rsp+3], 101
mov byte ptr [rsp+2], 72
# Can't move imm64 to memory directly, so have to copy to register first!
# mov rax, 729975031549884192
# mov qword ptr [rsp+8], rax
# mov rax, 48857072035144
# mov qword ptr [rsp], rax
mov rax, 1
mov rdi, 1
lea rsi, [rsp]
mov rdx, 15
syscall
mov rax, 60
mov rdi, 0
syscall