寄存器分配Skill RegisterAllocation

寄存器分配技能是编译器后端优化的核心技术,专注于实现高效的寄存器分配算法,包括图着色算法、线性扫描算法和溢出代码生成。该技能能处理编译器中的寄存器资源管理,优化代码性能,减少内存访问开销,提升程序执行效率。关键词:寄存器分配、图着色、线性扫描、溢出代码、编译器优化、代码生成、JIT编译、AOT编译、活跃区间分析、寄存器压力。

架构设计 0 次安装 0 次浏览 更新于 2/25/2026

name: 寄存器分配 description: 寄存器分配算法专家技能,包括图着色、线性扫描和溢出代码生成 category: 代码生成 allowed-tools:

  • 读取
  • 写入
  • 编辑
  • 全局搜索
  • 文本搜索
  • Bash

寄存器分配技能

概述

寄存器分配算法专家技能,包括图着色、线性扫描和溢出代码生成。

能力

  • 实现图着色寄存器分配
  • 实现线性扫描寄存器分配
  • 生成开销最小的溢出代码
  • 处理调用约定寄存器约束
  • 实现寄存器合并
  • 处理预着色节点和固定寄存器
  • 实现活跃区间分割
  • 设计寄存器压力分析

目标流程

  • jit-compiler-development.js
  • code-generation-llvm.js
  • bytecode-vm-implementation.js

依赖项

无(算法技能)

使用指南

  1. 算法选择:JIT使用线性扫描(快速),AOT使用图着色(最优)
  2. 活跃区间:在分配前计算准确的活跃区间
  3. 溢出成本:使用启发式方法最小化溢出成本(循环深度、使用频率)
  4. 调用约定:正确处理调用者/被调用者保存的寄存器
  5. 合并:实现积极合并以减少移动操作

输出模式

{
  "type": "object",
  "properties": {
    "algorithm": {
      "type": "string",
      "enum": ["graph-coloring", "linear-scan", "second-chance-binpacking"]
    },
    "spillStrategy": { "type": "string" },
    "registerClasses": {
      "type": "array",
      "items": { "type": "string" }
    },
    "generatedFiles": {
      "type": "array",
      "items": { "type": "string" }
    }
  }
}