# KOS_OP_CALL - **Style**: COUNT. Arg = number of positional arguments. - **Stack**: `[..., callable, arg_1, ..., arg_n] → [..., result]`. KosExpression/KosFunction: new frame pushed, in-loop execution. Python callable: may suspend on awaitable. - **Execution model**: Only the **call result** is ever auto-awaited: when a Python call returns a coroutine/awaitable, the VM awaits it (flattened) and pushes the final value. All other opcodes (CONST, loads, getattr, subscript, binary ops, yield-from results, etc.) push their value with no automatic await; use the AWAIT opcode to await explicitly. - **Invariants**: Stack has at least 1 + arg elements. See execution-invariants for in-loop flattening. **Example:** Call with 1 argument. Pool: 0 = fn, 1 = 42. | index | opcode | arg | arg view | comment | |------:|--------|-----|----------|---------| | 0 | CONST | 0 | 0 (fn) | stack: [..., callable] | | 1 | CONST | 1 | 1 (42) | stack: [..., callable, 42] | | 2 | CALL | 1 | 1 | pop callable + 1 arg; push result. stack: [..., result] | | 3 | RETURN | 1 | 1 | |