For most of my life I took for granted that programs begin executing at an address denoted by the symbol _start (a single underscore, followed by the word “start”). Turns out it’s not so simple. Take this x86 assembly program that prints “Hello, World!” on Linux: .global _start .text message: .ascii "Hello, World!\n" _start: # print the message mov $1, %rax # syscall 1 is write mov $1, %rdi # file descriptor 1 is stdout mov $message, %rsi # pass address of messsage mov $13, %rdx # p...