Les instructions d'assemblage sont (généralement) une correspondance directe avec les opcodes, qui sont des valeurs (multi-)octets du code machine pouvant être interprétées directement par le processeur. Il est tout à fait possible d'écrire un programme en opcodes directement en les recherchant dans une table (telle que celui-ci pour le microprocesseur 6039 par exemple) qui les liste avec les instructions d'assemblage correspondantes, et de déterminer à la main les adresses/offsets mémoire pour des choses comme les sauts.
Les premiers programmes ont été réalisés exactement de cette manière - des opcodes écrits à la main.
Cependant, la plupart du temps, il est plus simple d'utiliser un assembleur pour "compiler" le code d'assemblage, qui fait automatiquement ces recherches d'opcodes, et qui est également utile pour calculer les adresses/offsets pour les étiquettes de saut nommées, et ainsi de suite.
Les premiers assembleurs étaient écrits à la main. Ces assembleurs pouvaient ensuite être utilisés pour assembler des assembleurs plus compliqués, qui pouvaient ensuite être utilisés pour assembler des compilateurs écrits pour des langages de plus haut niveau, et ainsi de suite. Ce processus d'écriture itérative des outils pour simplifier la création de la prochaine série d'outils est appelé (comme mentionné par David Rabinowitz dans sa réponse) bootstrapping .
0 votes
Duplication possible de Lorsque quelqu'un écrit un nouveau langage de programmation, dans quoi l'écrit-il ?
4 votes
@nawfal, il s'agit d'une différence entre un nouveau langage de programmation et le premier compilateur, donc non - ce n'est pas un doublon
0 votes
@PauliSudarshanTerho quelle est la différence ? L'esprit des questions est le même. Vous ne pouvez pas écrire un langage de programmation, cette question parle à son tour de premier compilateur.
0 votes
Dans vos imaginations spirituelles peut-être ? En réalité, vous ne trouverez rien de mentionné sur le premier compilateur dans ce lien. Et vous ne devriez pas conseiller à quiconque écrit un nouveau langage de partir de zéro. Et si oui, alors pourquoi voulez-vous cacher les réponses sur la façon dont le premier compilateur est écrit si elle est importante pour l'écriture d'un nouveau langage ?
0 votes
Apprenez de moi - C'est un duplicata : stackoverflow.com/questions/4772768/