2010-05-18 4 views
1

Implémentation d'une machine virtuelle personnalisée et de l'utilisation de registres (ceux-ci stockent des pointeurs et sont NULL lorsqu'ils sont vides). Mais, j'ai réalisé que je n'avais aucune idée de comment gérer la mémoire basée sur le registre. Comme, que faire si tous mes registres sont épuisés et que certains codes en veulent un autre? De préférence, sans en créer un nouveau.
Ceci est en C++.Conseils de gestion des enregistrements

Répondre

2

Je ne pense pas que ce soit un problème de la machine, mais plutôt un problème du programmeur de la machine. Ce que vous pouvez faire (IMO) est juste de fournir les moyens de déplacer les valeurs des registres dans la mémoire d'avant en arrière. Problème résolu :)

+0

D'accord, il s'agit d'un problème du compilateur ou de l'éditeur d'assemblage, pas de la machine virtuelle. Si le compilateur est basé sur LLVM, il y a des passages pratiques que vous pouvez inclure pour faire de la mémoire -> enregistrer et enregistrer -> des traductions de mémoire (principalement pour SSA), et l'allocateur de registre de sortie est bon. –

Questions connexes