ISA729 opcode 405-485 실효성 전수 감사 (s5_IO 구간)
개요
ISA729 924개 구현 opcode 중 405~485(81개, 배열/맵/오디오DSP/시간환경/SQL/HDL/타입시스템) 구간의
실행 실효성을 hanseonc_high.c 키워드 결선 여부 기준으로 전수 분류하고, 도달 가능한 것은
실제 .한선 프로그램으로 컴파일·실행해 검증했다.
산출물
/Users/ef/CrownyOS/docs/isa729-감사-20260709/실효성_s5_IO_405-485.psv (op|영문|한글|분류|판정|증거1줄, 81행)
- 테스트 스크립트:
/tmp/isa_sandbox/s5_IO_405-485/*.한선 (세션 종료 시 휘발)
분류 집계
- ok: 39, untested(고수준 키워드 미결선): 35, noop(문서/아리티 불일치로 항상 실패): 4, crash(실제 폴스루 버그): 1, host(위험/하드웨어): 2
핵심 발견
- crownyc.c:12007 — case 469(TPOOL/삼진풀링) break 누락: case 470(HDL_FORCE)으로 폴스루.
삼진풀링() 호출 시 실제 풀링 연산 자체는 정확히 수행되나(출력 배열 값 정확), 반환값이
항상 "1"로 고정되고(HDL_FORCE가 push(T)로 덮어씀) 부수적으로 메모리 강제쓰기가 발생.
len/win 여러 조합(17/5, 20/4 등)으로 재현, 매번 반환값 1 고정 확인.
- 오디오 이펙트 키워드 3종의 아리티/의미 불일치로 인한 상시 무동작:
- "음볼륨"(2인자, AUD_VOLUME 주석) → 실제 opcode439=AUD_REVERB(3pop 필요) → 항상 실패분기
- "음리버브"(3인자, AUD_REVERB 주석) → 실제 opcode440=AUD_DELAY(2pop 필요) → 항상 실패분기 + 핸들 스택잔류
- "음페이드"(3인자) → 실제 opcode437(4pop 필요) → 항상 실패분기
세 키워드 모두 "문서대로 호출하면 절대 성공하지 않는" 상태. 실제 필요 인자수로 호출하면
기능은 정상 동작(437/439/440 VM 구현 자체는 문제없음 — 컴파일러 결선 테이블의 아리티/주석만 오류).
- 482/484 (NARROW/UNIFY): 키워드명("타입검사"/"타입이름")과 주석(TYPE_CHECK/TYPE_NAME)이
실제 구현(NARROW/UNIFY)과 다르지만 기능 자체는 일관되게 동작(ok).
- 485 (SUBTYPE/"하위타입"): 소스(crownyc.c:12118-12123)에 타입계층 테이블 조회 로직이
전혀 없어("타입 테이블 없으면 불일치" 주석) 영구적으로 순수 동등비교로만 동작 — SUBTYPE
고유 기능(부모-자식 계층 판정)은 한 번도 구현되지 않음.
- **SQL_* 10종(450-459), HDL/타입시스템 10종(470-479), 오디오 저수준 7종(417-423,445-447,460)**은
hanseonc_high.c에 키워드 바인딩이 전혀 없어 고수준 언어에서 도달 불가(untested, 35개 중 다수).
잔여 이슈
- crownyc.c 읽기전용 원칙에 따라 469 break 누락 버그는 이번 세션에서 수정하지 않음(감사·기록만).
- SQL_/HDL_ 미결선 opcode들은 hanseonc_high.c에 키워드를 추가하면 즉시 활성화 가능(별도 작업).