Comment apprendre l’interfaçage logiciel/matériel


Je peux penser à de multiples façons dont vous pouvez travailler à l'interface du matériel et du logiciel :

1.) Écrire votre propre compilateur ou assembleur pour une architecture de jeu d'instructions (ISA)


Je parie que vous savez probablement ce qu'est l'ISA, mais au cas où vous ne le sauriez pas, c'est - en termes simples - un accord entre le matériel et le logiciel sur ce que chacun attend de l'autre.

L'écriture d'un compilateur ou d'un assembleur nécessiterait que vous compreniez une ISA donnée : vous devriez apprendre quelles ressources matérielles et quelles instructions machine sont disponibles, comment les interruptions et les appels de fonction sont gérés, comment les données sont stockées, et bien plus encore (comme décrit dans l'ISA). Vous exploiteriez ensuite ces informations accumulées afin de prendre du code écrit et de le traduire en code machine équivalent et exécutable.

2.) Émuler un vieil ordinateur

Il s'agit en fait d'un projet sur lequel je travaille. Ce projet nécessiterait que vous fassiez une étude approfondie de l'ordinateur : quel processeur et quels périphériques avait-il, comment ce processeur fonctionnait, et comment ces périphériques fonctionnaient. Ensuite, en utilisant cette compréhension, vous écririez un programme qui pourrait charger avec succès des applications écrites pour la machine originale et les exécuter de la même manière que la machine originale.

Je suggérerais d'écrire un émulateur pour une ancienne console de jeux vidéo parce qu'il y a beaucoup de documentation pour ces machines, et une fois que vous l'avez construit, vous auriez une raison d'utiliser réellement l'émulateur (s'il se trouve que vous aimez les vieux jeux vidéo).

3.) Pirater un noyau

J'ai une compréhension très vague de ce que c'est, mais je crois que c'est surtout écrire du code qui modifie le noyau d'un système d'exploitation tel que Linux. Ce noyau - le kernel - est ce qui gère l'exécution des programmes et l'interaction du logiciel avec les E/S et la mémoire. Ainsi - tout comme l'écriture d'un compilateur ou d'un assembleur - le piratage/développement de noyau vous permettrait de travailler très étroitement avec le matériel d'un ordinateur à usage général du côté logiciel et d'une manière très pratique.

4.) Construisez votre propre ordinateur

Si vous avez les moyens, vous pourriez construire votre propre ordinateur. Et je ne veux pas dire acheter un processeur, de la mémoire, un boîtier, et quoi encore, et l'assembler. Non, je veux dire devenir fou et concevoir votre propre ISA, construire un processeur basé sur celle-ci à partir de zéro (en utilisant des micropuces), et l'interfacer avec la mémoire et les E/S (également potentiellement construites à partir de zéro).