A Whirlwind Tutorial on Creating Teensy ELF Executables for Linux - https://news.ycombinator.com/item?id=32524007 - Aug 2022 (10 comments)
A Whirlwind Tutorial on Creating Really Teensy ELF Executables for Linux (1999) - https://news.ycombinator.com/item?id=21846785 - Dec 2019 (22 comments)
A Whirlwind Tutorial on Creating Really Teensy ELF Executables for Linux (2005) - https://news.ycombinator.com/item?id=11709247 - May 2016 (5 comments)
Creating Really Teensy ELF Executables for Linux - https://news.ycombinator.com/item?id=8745024 - Dec 2014 (13 comments)
The Teensy Files: Creating teensy ELF executables for Linux - https://news.ycombinator.com/item?id=8642734 - Nov 2014 (7 comments)
A Whirlwind Tutorial on Creating Really Teensy ELF Executables for Linux - https://news.ycombinator.com/item?id=5016434 - Jan 2013 (14 comments)
Tutorial on Creating Really Teensy ELF Executables for Linux - https://news.ycombinator.com/item?id=875077 - Oct 2009 (16 comments)
3998-byte executable reduced to 45 bytes - https://news.ycombinator.com/item?id=68056 - Oct 2007 (10 comments)
nasm -f elf64 tiny.s && ld -s tiny.o
; tiny.asm
BITS 64
GLOBAL _start
SECTION .text
_start:
mov eax, 1
mov ebx, 42
int 0x80
and this lands me at 4320 bytes!
Why is there such a stark difference?Your linker must align the .text section to the page size (often 4096 bytes). If you open the binary with a hex editor you'll see lots of null padding.
https://www.amazon.com/Programming-Ground-Up-Jonathan-Bartle...
I've written a few sizecoded raspberry pi entries, there's even a writeup of one of them in tmp.out where I loaded some code into the ELF headers https://tmpout.sh/3/08.html
I think I am the "inventor" of the first 64 and 32 byte intro competitions. (Just checked, we ran a 64 byte competition at the 0a000h 2002 and added 32 byte in 2003.) See https://0a000h.de/2002/ and https://0a000h.de/2003/ - releases are on scene.org