Comment créer un compilateur C sans compilateur natif C

C’est une question simple. Si comstackr le compilateur C est nécessaire, un compilateur C … Peut-être directement avec le code assembleur? Peut-être que le kernel fournit un outil de base pour convertir C en assembleur et créer une infrastructure en progression? C’est une question stupide aussi mais je suis vraiment intéressé par la façon de concevoir un système d’exploitation (pas moi) à partir de 0 pour interagir avec le processeur et la mémoire.

Amorçage

Cela vient de la phrase “se ressaisir par ses bottes”, si vous voulez le rechercher. Le démarrage est un processus simple, mais qui demande beaucoup de travail.

  1. Ecrivez un compilateur C dans une autre langue.

  2. Ecrire un compilateur C en C.

  3. Utilisez le compilateur de l’étape 1 pour comstackr le compilateur de l’étape 2.

Certains autres compilateurs doivent être démarrés, pas seulement ceux de C. Par exemple, GHC doit être utilisé pour se comstackr.

Notez que l’amorçage n’est nécessaire que si les deux conditions suivantes sont vraies:

  1. Vous êtes en train d’inventer un nouveau langage, il n’y a donc pas de compilateur existant.

  2. Vous voulez écrire le compilateur dans le langage que vous comstackz.

Cela n’a rien à voir avec les systèmes d’exploitation. Si vous concevez un système d’exploitation, vous avez déjà suffisamment de travail devant vous. Si votre nouveau système d’exploitation ne dispose pas encore d’un compilateur C, vous pouvez le comstackr de manière croisée à partir d’un système d’exploitation différent. C’est beaucoup moins de travail – peut-être quelques heures ou quelques jours, au lieu de mois ou d’années.

Cela ressemble à une tâche de tcc ( http://bellard.org/tcc/ ), le compilateur Tiny C.

C’est le plus petit compilateur C que je connaisse, il peut en comstackr un plus grand une fois que vous l’avez porté, et il existe de nombreux guides sur la manière de le porter sur des systèmes personnalisés.