Sto scrivendo un compilatore per una macchina stack piuttosto standard. Ora voglio aggiungere un garbage collector. Posso vedere che potrei generare una sorta di 'pila di mappe' per sapere quali variabili sono root gc in ogni record di attivazione. Tuttavia, non ho idea di come gestire i valori intermedi inseriti nello stack durante l'esecuzione. Il linguaggio che sto compilando è di tipo Pascal, quindi non ho bisogno e non voglio usare i tag per identificare i puntatori da altri tipi di dati.Come trovare le root gc in una macchina stack?
Gradirei eventuali suggerimenti/indicazioni su come
- Trova radici GC nella pila in qualsiasi punto nel tempo (ad esempio, come identificare quale dei valori intermedi che sono stati spinti nella pila sono radici gc).
- usuali codifica queste informazioni (vale a dire, come generare e codificare 'mappe pila')
ringrazio molto! Nicolas