我正在編寫一個相當標準的堆棧機器的編譯器。現在我想添加一個垃圾收集器。我可以看到我可以生成某種「堆棧映射」來知道哪些變量是每個激活記錄中的gc根。但是,我不知道如何處理在執行過程中壓入堆棧的中間值。我正在編譯的語言與Pascal相似,所以我不需要,也不想使用標記來識別來自其他數據類型的指針。如何在堆棧機器中找到gc根?
我希望任何提示/如何
- 在任何時間點查找堆棧GC根指針(即,如何識別哪些已在堆棧已經被推的中間值是GC根)。
- 常見的形式編碼該信息(即如何產生和編碼「疊加圖」)
非常感謝你的! Nicolas