Comment pourrais-je écrire "bonjour monde" en binaire?
Supposons que je voulais écrire un programme pour afficher "hello world", et je voulais l'écrire en binaire. Comment pourrais-je faire cela?
J'ai une idée:
- J'avais besoin pour déterminer ce que l'architecture de la puce, je suis en utilisant
- J'aurais besoin de savoir quel type de binaire, il utilise
- J'aurais besoin de référence pour que la saveur de binaire
- J'ai peut-être besoin de modifier un paramètre dans mon éditeur (Vim)
Quelqu'un peut-il me guider à travers cette?
source d'informationauteur Nathan Long
Vous devez vous connecter pour publier un commentaire.
C'est peu plus compliqué, parce qu'en fait, l'impression de "Hello, world!" à la sortie standard (stdout) est un appel système, donc vous avez besoin de connaître la bonne noyau syscall nombre. Qui, bien sûr, varie en fonction du système d'exploitation. Aussi, vous devez connaître le format binaire, qui ont également tendance à varier, bien que ELF (Executable et Linkable Format) est universelle dans quelques saveurs de Unix et Linux.
Voir Bonjour tout le monde! en assembleur.
C'est Linux code assembleur:
... qui sur Linux 32 bits, la compilation des résultats en binaire de 360 octets, même si c'est surtout les zéros:
Puisque vous voulez "compiler à la main", cela signifie essentiellement la traduction en assembleur mnémoniques au-dessus de leurs opcodespuis enrouler le résultat dans le bon format binaire (ELFE dans l'exemple ci-dessus)
Mise à JOUR: Comme cette réponse montre par @adam-rosenfield, le binaire ELF pour "Hello, world!" peut être découpé à la main en bas à 116 octets.
Normalement, vous devriez utiliser un éditeur hexadécimal pour cela. Comprendre le code d'assemblée à la main, l'assemblage, l'utilisation de l'éditeur hexadécimal pour entrer les valeurs binaires, puis les enregistrer dans un fichier. Une fois que vous avez votre fichier, déposez-les dans votre machine de surveiller et de charger le fichier à disposition d'une adresse, puis de passer à la première instruction. C'était assez courant sur les ordinateurs à carte unique et se fait toujours sur des microcontrôleurs aujourd'hui, mais ce n'est pas quelque chose que vous allez faire sur un contemporain de l'OS. Si vous voulez vraiment pour ce faire, je recommande d'exécuter un faible niveau d'émulateur (SIMH de travail) ou de travailler avec un microcontrôleur (vous pouvez ramasser un TI MSP430 kit de développement pour moins de cinq dollars).