IR instruction seti (14 opcode): LOAD_CONST, LOAD_SLOT, ADD/SUB/MUL/DIV/MOD, LESS/LEQ/GT/GEQ/EQ/NEQ, JMP, JIF_FALSE, CALL, RETURN, CALLHOST IRGenerator (AST → IR): - Slot tabanlı register: parametreler slot 0..n, lokaller/geçiciler sonrası - freshSlot() monoton sayaç — slot asla geri verilmez - Backpatch: ileri-jump için emitJumpIfFalse(-1) → patchJump(idx) - Geri-jump: loopStart = currentInstrIndex() → emitJumpUnconditional(loopStart) - Builtin tespiti: resolvedSymbol->isBuiltin → CALLHOST Interpreter (bytecode VM): - Her iterasyonda callStack.back() taze alınır (referans güvenliği) - CALL: yeni frame + argüman kopyası + continue - RETURN: değer caller slotuna, frame pop + continue - ip CALL/RETURN'den önce ilerler — caller doğru noktadan devam eder - DIV: sıfıra bölme → runtime_error Doğrulama: build/saqut run file:examples/fibonacci.sqt → 55 / 55 ✓ tests/run.sh → TUM TESTLER GECTI ✓ |
||
|---|---|---|
| .. | ||
| CMakeFiles | ||
| .ninja_deps | ||
| .ninja_log | ||
| CMakeCache.txt | ||
| build.ninja | ||
| cmake_install.cmake | ||