40 lines
1.4 KiB
Markdown
40 lines
1.4 KiB
Markdown
# PR-034 - Backend Emitter HOSTCALL and SYSC Contract
|
|
|
|
## Briefing
|
|
|
|
Fechar o contrato de emissao host-backed e intrinsic no emitter: deduplicacao canonica de `SYSC`, ordenacao por primeira ocorrencia, `HOSTCALL` em pre-load e rejeicao de `SYSCALL` bruto.
|
|
|
|
## Target
|
|
|
|
- Implementar materializacao de `syscalls` no artefato.
|
|
- Implementar map `host binding -> sysc_index`.
|
|
- Preservar caminho de `INTRINSIC` distinto de host.
|
|
|
|
## Method
|
|
|
|
- Deduplicar `SYSC` por `(module,name,version)` e manter ordem da primeira ocorrencia.
|
|
- Emitir chamadas host-backed como `HOSTCALL <sysc_index>`.
|
|
- Rejeitar candidatas que contenham `SYSCALL` em imagem pre-load (`MARSHAL_LINKAGE_*`).
|
|
- Validar mismatch detectavel de ABI (`arg_slots`, `ret_slots`) com metadado de compilacao.
|
|
|
|
## Acceptance Criteria
|
|
|
|
1. `SYSC` deduplicado e ordenado por primeira ocorrencia.
|
|
2. Nao existe `SYSCALL` bruto no artefato pre-load emitido.
|
|
3. Caminho intrinsic nao polui `SYSC`.
|
|
4. Falhas de linkage sao deterministicas.
|
|
|
|
## Tests
|
|
|
|
1. Teste positivo com chamadas host repetidas gerando um unico `SYSC`.
|
|
2. Teste negativo de `SYSCALL` bruto no pre-load.
|
|
3. Teste negativo de mismatch ABI em host binding.
|
|
4. Teste positivo de intrinsic sem entradas em `SYSC`.
|
|
|
|
## Affected Documents
|
|
|
|
- `docs/general/specs/15. Bytecode and PBX Mapping Specification.md`
|
|
- `docs/general/specs/19. Verification and Safety Checks Specification.md`
|
|
- `docs/pbs/specs/6.2. Host ABI Binding and Loader Resolution Specification.md`
|
|
|