Y a-t-il un assembleur qui écrit du code pour une machine universelle?

Avec la portabilité à l’esprit, existe-t-il un assembleur qui écrit du code pour une Machine universelle, qui peut alors easiliy être porté à n’importe quel environnement/plateforme matérielle, et seulement besoin d’une traduction dernière étape de Code de Machine universelle vers l’ordinateur cible langage Machine natif.

Réponse

LLVM est construit sur cette idée. Le langage LLVM est fondamentalement un assembleur sauf qu’elle ne vise pas à n’importe quel matériel de machine donnée. Plusieurs optimisations sont effectuées sur le programme avant de le transmettre à un backend de matériel spécifique qui peut éventuellement faire quelques optimisations spécifiques de matériel supplémentaire avant de générer le code binaire réel.

Comme le dit Toby Thain, une approche alternative est que des C-- qui a été développé comme un back-end du compilateur GHC (Glasgow Haskell Compiler). C - est un langage C-like avec des fonctionnalités supplémentaires pour permettre des choses comme placement explicite du code en ce qui concerne les données (imaginez utiliser une négative compenser d’un pointeur à une fonction pour accéder aux données qui est statiquement placé immédiatement avant une telle fonction) et autres astuces disponibles en assembleur mais pas en C.

Il n’est pas techniquement un assembleur, cependant et comme tel il n’est pas entièrement admissible pour cette question, mais il peut être mieux/plus facile à développer pour. Malheureusement, il n’est pas aussi développée que le projet LLVM et, avec l’apparition de LLVM (C - est beaucoup plus âgé que LLVM), il n’y a pas plus un énorme disque de le développer. La mise en œuvre plus actuel et plus mature existe aussi fondamentalement code seulement sous le nom interne de GHC lui-même.


Tags: Programmation informatique, Langages de programmation, Langage d’assemblage, Question de l’existence