HeadlinesBriefing HeadlinesBriefing.com

Alokasi register yang ditingkatkan dari Rat mengurangi baris dan menghasilkan code yang lebih baik

Hacker News •
×

7 Oktober 2026 — rat adalah backend compiler kecil dengan frontend C99 semi-fungsional, menggunakan x86-64 code generator yang memetakan register virtual (vregs) ke register fisik atau slot stack. Alokasi linear scan lama bertumbuh menjadi 1392 baris, mendorong penulisan ulang alokasi bin packing dengan prioritas dalam hanya 584 baris. Alokasi baru ini mengunjungi rentang hidup berdasarkan kepentingan dan menempatkan masing-masing di register pertama yang cocok, mirip dengan alokasi greedy LLVM tapi lebih sederhana.

Satu nilai hidup dari tulisan hingga pembacaan terakhir; dua nilai berbagi register hanya ketika tidak pernah hidup secara bersamaan. Ketika terlalu banyak nilai hidup, some spill ke memori. Konvensi pemanggilan mengharuskan menjaga register callee-saved (rbx rbp r12-r15) sedangkan register caller-saved dapat di-overwrite.

Seperti ditunjukkan, fungsi h menjaga y hidup melalui panggilan tanpa logika alokasi eksplisit untuk penempatan callee-saved. Alokasi menjalankan lima langkah: rentang hidup, register tetap, coalescing, pemilihan register, dan spill. Setiap bundle menjaga register atau slot stack untuk seluruh hidupnya, never evicting atau splitting rentang.

Sumber: Hacker News · Diringkas oleh HeadlinesBriefing