# KOS_OP_PUSH_PARAM - **Style**: CONST. Arg = constant pool index of names tuple `(name_0, name_1, ...)`. - **Stack**: `[..., val_0, val_1, ..., val_{n-1}]` → `[]`. Values consumed; names come from constant. - **Pushes:** KOS_DYN_PARAM (extent kind KOS_EXT_PARAM; owns its operand segment). Builds dict from names and values, enters param extent. - **Invariants**: Constant at arg must be a tuple of names; stack must have at least `len(names)` values. - **Example:** `(parameterize ((x 1) (y 2)) body)` compiles to push values 1, 2, then PUSH_PARAM with names `("x", "y")`. | index | opcode | arg | arg view | comment | |------:|------------|-----|--------------|----------------------------| | 0 | CONST | 1 | 1 (1) | push 1 | | 1 | CONST | 2 | 2 (2) | push 2 | | 2 | PUSH_PARAM | 0 | 0 (names) | pop 2 values, push param | | 3 | … | … | … | body | | N | POP_PARAM | 0 | 0 | pop param extent |