Re: Генерация машинного кода в компиляторах
От: koenjihyakkei Россия  
Дата: 17.05.23 10:57
Оценка: +2
Здравствуйте, VVVa, Вы писали:

VVV>кстати довольно много приходится писать ...


Ну вручную заниматься распределением регистров довольно неблагодарное занятие. Как тут уже писалось, задача Register Allocation это NP-полная задача.

Есть два популярных алгоритма регалока: Linear Scan и Graph Coloring. Первый прост в реализации и быстрее в работе, но второй более эффективен.

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

Я бы посоветовал генерировать сначала LLVM IR файл и потом скармливать его LLVM llc тулзе для генерации машинного кода.
Отредактировано 17.05.2023 12:24 koenjihyakkei . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.