RedPanda-CPP/platform/windows/templates/Hello_GAS/main.s

22 lines
615 B
ArmAsm

.global main
.text:
main:
# the x64 calling convention requires you to allocate 32 bytes of shadow space before each call
# https://stackoverflow.com/questions/30190132/what-is-the-shadow-space-in-x64-assembly/
sub $32, %rsp # allocate shadow space
leaq fmt(%rip), %rax # first parameter
movq %rax, %rcx
leaq msg(%rip), %rax # second parameter
movq %rax, %rdx
call printf
add $32, %rsp # remove shadow space
xor %eax,%eax # set 0 as exit code
ret
msg:
.asciz "Hello world\n" # asciz puts a 0 byte at the end
fmt:
.asciz "%s" # asciz puts a 0 byte at the end