diff --git a/alloca.S b/alloca.S new file mode 100644 index 0000000..7ad9b56 --- /dev/null +++ b/alloca.S @@ -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 \ No newline at end of file