# PR-036 - Backend IRVM Core Model and Validator ## Briefing Criar o modelo `IRVM` quase-ISA e validador estrutural compile-time, base para `LowerToIRVM`, `OptimizeIRVM` e `EmitBytecode`. ## Target - Introduzir tipos de `IRVM` (modulo, funcao, instrucao, operandos, labels). - Suportar opcodes Core ISA e opcodes internos (`IRVM_EXT`) com metadados obrigatorios. - Implementar validacao estrutural minima de controle/pilha/calls. ## Method - Criar API de instrucao com `pops`, `pushes`, `is_branch`, `is_terminator`. - Implementar verificador de fronteira compiler-side: - alvo de salto valido, - join de stack consistente, - underflow/overflow, - retorno coerente com `return_slots`, - validade de `func_id`. - Definir contrato de serializacao bloqueando `IRVM_EXT` na fronteira de emissao. ## Acceptance Criteria 1. `IRVM` suporta representacao de Core ISA e extensoes internas eliminaveis. 2. Validador detecta inconsistencias estruturais requeridas pela spec 20. 3. Falhas sao deterministicas e categorizadas como `MARSHAL_VERIFY_PRECHECK_*` quando aplicavel. 4. Resultado do validador pode ser consumido por stages de optimize/emissao. ## Tests 1. Teste unitario para salto invalido e salto para meio de instrucao. 2. Teste unitario para mismatch de stack em join. 3. Teste unitario para retorno com shape invalido. 4. Teste unitario para `IRVM_EXT` residual bloqueando emissao. ## Affected Documents - `docs/general/specs/20. IRBackend to IRVM Lowering Specification.md` - `docs/general/specs/19. Verification and Safety Checks Specification.md`