Il est très peu probable que la réelle exécutable compilé serait jamais à seulement 20 octets. Vous avez normalement beaucoup d'OS spécifique code de chargement, ELF-têtes sont énormes comme il est.
La seule façon d'obtenir quelque chose en cours d'exécution dans le court laps de un espace pourrait être un "nouveau" format compilé qui était simplement la chaîne de caractères "hello world", qui pourrait être injecté directement dans le parent de l'OS, et en quelque sorte l'OS juste "savaient" que ce fichier devait être imprimé.
Mais alors, vous êtes de plus dans la technicité, parce que vous êtes, par procuration, de l'appel d'un noyau entier pour faire le vrai travail, et que les moyennes entre 2 et 8 MO.
Si vous allez faire quelque chose qui fonctionne sans un OS, alors vous avez routines d'initialisation que vous avez à faire juste pour le faire fonctionner.
Et puis la question évolue, ne "20 octets" inclure ou d'exclure le byte-code dans le bios?
Si vous voulez vraiment le faire, peut-être que vous devriez avoir un matériel dédié à l'architecture, avec un câblé puce rom avec le "20 octets de code programmé électroniquement.
En dehors de ces étranges contraintes techniques, je vous dirais que j'ai mon propre "langage interprété", connu comme le "chat".
"chat" est aussi mon os, et je l'utilise pour créer le fichier source initiale
1) le Codage, et la compilation de mon code binaire:
cat > helloworld.txt
Hello World^D^D
2) l'Exécution de la "compilé" bytecode
cat helloworld.txt
Hello World
voir. merveilleux. Je vais prendre la médaille d'or merci :)
Seulement 11 octets.
La fin de linux truc
$ cd /tmp
$ echo '#!/bin/echo' >> hello
$ chmod u+x hello
$ ./hello world
> ./hello world
$ wc -c ./hello
> 12 ./hello