# AArch64 machine language Linux, 48 bytes 0: d2800020 mov x0, #0x1 # stdout is fd=1 4: d28001a2 mov x2, #0xd # length of string 8: 94000005 bl 1c # put addr of string to x30 c: 6c6c6548 "Hello, World!" 77202c6f 646c726f 00000021 1c: aa1e03e1 mov x1, x30 # put addr of string to x1 20: d2800808 mov x8, #0x40 # select write() syscall 24: d4000001 svc #0x0 # syscall 28: d2800bc8 mov x8, #0x5e # select exit() syscall 2c: d4000001 svc #0x0 # syscall To try it out on an AArch64 Linux machine or Android device with Termux, compile and run the following C program. You may need to pass the `-zexecstack` argument to the compiler. const char main[]=" \0\x80\xd2\xa2\1\x80\xd2\5\0\0\x94Hello, World!\n\0\0\xe1\3\x1e\xaa\b\b\x80\xd2\1\0\0\xd4\xc8\v\x80\xd2\1\0\0\xd4" Edit: Added comments