Asembler inaczej

Podczas pisania kodu obsługującego sprzęt, lub optymalizowania niewielkich funkcji od których zależy efektywność dużego systemu, asembler może oczywiście okazać się najlepszym wyborem.

Traktuje się go jednak wtedy jako zło konieczne, ze względu na nieprzenośność, uciążliwość w implementacji oraz podatność na błędy.

Zdawało by się, że pisanie takiego kodu nie przynosi autorom zbyt wiele radości, że zajmują się tym z niechęcią i naprawdę w ostateczności.

Otóż wcale niekoniecznie. Na stronie www.linuxassembly.org znależć można garść projektów wykonanych przez ludzi, dla których programowanie w asemblerze było czystą zabawą.

Niektóre z opubikowanych tam programów mają pewną wartość użytkową, jak miniaturowa wersja biblioteki libc, albo asmutils (znane wszystkim proste programy jak ls, ps itp.) w znacznie mniejszej wersji.

Ale jak inaczej niż zabawą można nazwać próby zmniejszenia programu rozmiaru 2KB do 100B i bardziej? albo stworzenia najmniejszego kompilatora świata? (171b, do ośmioinstrukcyjnego języka kompletnego w sensie Turinga).

Przez tych programistów asembler traktowany jest jak najlepsza intelektualna rozrywka, wielkie wyzwanie. A jaka jest jakość tej rozrywki, wystarczy chyba spojrzeć na nazwę języka stosowanego we wspomnianym wyżej kompilatorze...

Pytanie: ile miejsca w systemi plików ext3 zajmie 50 bajtowy program?