2010-06-22 16 views
0

Salutations Overflowers,Ressources sur l'écriture de backends de compilateur pour les langages OO?

Je suis en train de comprendre en profondeur la façon dont on peut développer un système x86 (IA32/ia64) back-end pour les langues OO (staticly/dynamiquement tryped), principalement à exécuter sous Windows OS. J'ai une bonne compréhension de l'architecture x86, de l'architecture Windows et de la manière d'obtenir un code au niveau de l'arborescence, prêt à être optimisé et sérialisé en code natif de la machine.

C'est juste cette étape (sérialisation) que je ne comprends pas vraiment et je veux en savoir plus. Par exemple, existe-t-il un ensemble x86 standard d'instructions sérialisées pour un noeud de boucle dans l'arbre de code?

J'essaie de lire les livres de compilation maintenant, mais y a-t-il des matériaux spécifiques (livres, tutoriels, projets ... etc) à ce sujet? Comment utiliser le langage C comme langage intermédiaire et utiliser des compilateurs C prêts à l'emploi comme backend, comme ICC pour leurs excellentes optimisations?

Un grand merci pour vous tous!

Répondre

0

Oui, vous pouvez générer un autre langage tel que C, puis le compiler dans la langue machine de votre plate-forme. Cfront, le compilateur C++ original a fait exactement cela.

Une autre possibilité serait d'utiliser LLVM qui vous donne une API abstraite pour générer le langage machine.

+0

Merci R. Samuel. Qu'est-ce qui s'est passé à côté de C++, a-t-il continué à utiliser cette technique et pourquoi pas si non? – geeko

+0

@geeko - ne confondez pas un compilateur spécifique avec l'ensemble du langage C++. AFAIK, Cfront a toujours généré C; finalement d'autres compilateurs qui ont directement généré le code machine ont été implémentés. –

+0

Ouch, oui j'ai été confus! Merci R. Smauel :) – geeko