uops – Micro‑Operaciones del Backend JIT

Archivo: src/uops.rs

Este módulo define la unidad mínima de trabajo que la capa JIT del compilador Forja traduce a código máquina nativo. Cada Uop (micro‑operation) representa una instrucción de nivel muy bajo que a su vez puede mapearse a una o más instrucciones ensamblador reales según la arquitectura objetivo.

Motivación

Enum Uop

The Uop enum defines the micro‑operations used by the JIT compiler. It includes variants for loading and storing registers, immediate values, arithmetic operations, comparisons, logical operations, control‑flow constructs (jumps, labels), function calls, and other miscellaneous actions. See the source file src/uops.rs for the full list.

Flujo de generación

  1. El compilador de alto nivel (compiler_asm.rs) genera una lista de Uop a partir del AST.
  2. El pass de optimización de uops.rs recorre la secuencia y aplica transformaciones como constant folding, dead‑code elimination y instruction merging (p. ej. combinar LoadImmI64 + StoreReg en una sola MovRegImm del backend).
  3. Finalmente, la fase de emitter (compiler_asm.rs método emit_uops) traduce cada Uop a la sintaxis de ensamblador específica de la arquitectura (x86‑64, ARM64).

Extensibilidad

Para añadir una nueva micro‑operación: