Add alloca function (stack allocation)
This commit is contained in:
parent
48f1f2fa77
commit
4057ac4bcc
43
alloca.S
Normal file
43
alloca.S
Normal 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
|
Loading…
Reference in New Issue
Block a user