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