2010-11-14 4 views
1

Bonjour Je recherche une orientation ou une option de références. Je construis un compilateur mais je veux qu'il manipule des types hétérogènes (comme C struct). Un tableau est homogène. Je veux connaître la théorie, je sais qu'il existe déjà des techniques et des méthodes, comme modifier quelque chose dans le tableau des variables et d'autres choses. J'ai trouvé quelque chose dans le livre de Louden, mais ce n'est pas complète = (l'explication qu'il a laissé dans l'air.type d'enregistrement génération de code intermédiaire

J'ai été googler, mais je ne sais pas comment google ....

Je vous serais reconnaissant une certaine orientation sur la façon de trouver des théories existantes, et la génération de code, et tel.

la langue est STATIC DACTYLOGRAPHIÉ

+1

Comment votre langue est-elle tapée? – Tobu

+1

Et comment la mémoire est-elle gérée? – Tobu

Répondre

1

Si foo est un type d'enregistrement avec les champs a, b et c des types ta, tb et tc, puis une valeur de foo peut être représentée comme un morceau de mémoire de taille sizeof(ta) + sizeof(tb) + sizeof(tc).

Si votre environnement d'exécution (ramasse-miettes, installations de réflexion) nécessite que des informations supplémentaires soient stockées pour chaque valeur, vous devez réserver de l'espace pour cela.

Maintenant, si vous avez une valeur x de type foo et accédez par ex. le champ b (en écrivant x.b ou quelle que soit la syntaxe de votre langue pour l'accès au champ est) cela peut être compilé pour ajouter sizeof(tb) à l'adresse de x puis en lisant la valeur du type tb à cette adresse.

Vous pouvez également ajouter un peu de remplissage si le type d'enregistrement a des tailles différentes.

Et c'est tout ce qu'il y a à faire.