Цитата Сообщение от elf/2
как ты предполагаешь определять какая память больше не нужна?

для сборки мусора необходимо определить когда та или иная переменная/объект вышла/ел из области видимости. сие не представляется возможным по причине отсутсвия понятия переменной/объекта в используемых языках программировая (асм)
Динамическое управление памятью заключается в том, что имеется большая область памяти, называемая "куча". Программы могут динамически запрашивать память нужного им размера, при этом им выдаётся указатель на выделенную в куче память.

Сборка мусора требует ссылочной прозрачности всех структур данных. То есть сборщик мусора должен знать, какие переменные являются указателями. Ему необходимо предоставить эту информацию.

Принцип работы сборщика мусора заключается в том, что выбираются все глобальные статические указатели, и помечаются все достижимые из них области памяти. Все недостижимые области памяти являются мусором.

Ассемблер - не очень удобный язык для программирования совместно со сборкой мусора. Следует использовать язык более высокого уровня.