Реклама

Крысский регистратор

#Крысский #Статья #Комментарий

Статья URL: https://hexrat.cc/pages/blog/2026_10_07 Комментарий

7 октября 2026 года, крысёныш-раздачник - это мой маленький компилятор (со слоем полуработающего переднего края C99). Его генератор кода x86-64 переводит промежуточное представление (IR) в инструкции x86-64. В них используется неограниченное число виртуальных регистров (vregs). В распределительном регистре каждый раз вводится в физический регистр: может использоваться реестр общего назначения (12) или регистр x мм (14 на Linux1). Когда нет бесплатного регистра, он картирует врег на стопку. Долгое время крыса использовала линейный сканирующий аллерг, который посещает диапазоны в программном порядке. Это сработало, но оно увеличило по одному чинке за раз до 1392 строк. Поэтому я измерил, какая его часть помогла, выбросила остальное и написала упаковочный распределительный пакет в 584 линиях. Она посещает в прямом эфире по значимости и ставит каждый из них в первый реестр, где он подходит. Это та же семья, что и жадный аллергический аллигатор LLVM, минус большинство жестких частей, и он делает код лучше. Значение в прямом эфире от места его написания до того, где оно читается последний раз. Два значения могут иметь общий реестр только в том случае, если они никогда не живут одновременно. Когда в какой-то момент существует слишком много ценностей, некоторые из них приходят к памяти: они прольются. Утечка стоит магазина и груза. Лучшее задание - найти NP-hard 2, так что все практические аллокаторы используют эвристику. В призывной конвенции добавляются два правила. Звонок может…