ISA729 opcode 이름 미매핑 567개 전수 명명 — 완결
개요
crownyc.c(CrownyOS/crownyc, 정본) 실측 스펙 docs/ISA729_IMPL.md 기준,
구현된 opcode 924개 중 영문 mnemonic·한글명이 둘 다 비어 트레이스에서
???로 표시되던 567개 opcode 전수에 이름을 부여했다. 공개 스펙 문서의
"이름누락" 컬럼을 567 → 0으로 완결.
무엇을 했는지
- 명명표 생성:
docs/ISA729_IMPL.md의 이름누락=Y 567행에서 opcode
TOKEN — 설명 형식으로 영문 mnemonic 후보를 내장하고 있어 leading-token
추출로 처리, 코멘트가 없는 9건은 crownyc.c 소스를 직접 읽어 확인
(예: opcode 700 CELL_NEIGHBORS, opcode 856 FILE_SOCKET_SEND — 이미
CLAUDE.md에 "파일소켓전송"으로 문서화되어 있던 것과 합치).
한글명은 영단어 조각(약 250개, 기존 코드베이스 관례 기반) → 한글 매핑
사전으로 자동 생성. 처리 스크립트: 세션 스크래치패드
gen_naming.pl (Perl, 일회성 데이터변환 도구).
- 충돌 해소:
opcode_name() 반환값 307개 고유값 + SHA256 예외 1건)와 전부 무충돌.
동일 srcline이 2개 opcode에 공유되는 케이스(ADDOV,MULOV/
WRAP_ADD,WRAP_MUL)는 코멘트의 나열 순서대로 배정.
- 한글명: 자동생성 중 우연 중복 7쌍 발견 → 의미 세분화로 해소
(예: PROC_KILL→프로세스종료 vs PROC_EXIT→프로세스종료(exit),
ISINSTANCE→인스턴스검사 vs TYPECHECK→타입검사).
- PWM/LED 2건만 순수 영문 acronym(한글표기 없음) — 기존 SHA256·
TLS·MPS 임베드 관례를 그대로 따름.
- crownyc.c 적용:
opcode_name()(라인~5112)·opcode_name_kr()
- 빌드·검증: 임시경로 `cc -O2 crownyc.c -lm -framework Security
빌드 → --version + RPN 스모크(3 7 더해`→10)
+ --trace로 신규 opcode 2건(215 BATTERY, 624 CUBE_NEW)을 raw TOAU
cube로 직접 인코딩해 실행, ??? 대신 BATTERY (배터리) /
CUBE_NEW (큐브생성) 표시 확인 → mv로 정본 교체 →
pkg/crownyc.c cp 동기화 + pkg 재빌드 + mv.
- 스펙 재생성:
tools/isa729_spec_gen.sh재실행 →
docs/ISA729_IMPL.md "이름 미매핑" 567 → 0 확인. 동일 파일을
crowny-hansunc/public/ISA729_IMPL.md에 복사, curl 200 + 크기일치
확인(hansunc.crowny.org:9763).
- npm 게시:
@crowny/crownyc11.0.3 → 11.0.4 patch,
npm publish(로컬 Verdaccio pkg.crowny.org) 성공,
npm view versions 실증. CHANGELOG.md에 11.0.4 항목 추가.관련 파일
/Users/ef/CrownyOS/crownyc/crownyc.c(정본, 18347줄)/Users/ef/CrownyOS/crownyc/pkg/crownyc.c(npm 패키지 동기화본)/Users/ef/CrownyOS/crownyc/pkg/CHANGELOG.md(v11.0.4 항목)/Users/ef/CrownyOS/docs/ISA729_IMPL.md(재생성됨, 이름누락 0)/Users/ef/crowny-hansunc/public/ISA729_IMPL.md(배포본)/Users/ef/CrownyOS/crownyc/tools/isa729_spec_gen.sh(+.pl, 재사용)
잔여 이슈
- QUICK_REF 대조 충돌 38건은 이번 작업 범위 밖(기존
ISA729_QUICK_REF.md가
ISA729_IMPL.md가 유일 신뢰 원천으로
이미 명시돼 있음).
- 이번에 부여한 한글명 다수는 기계적 사전조합(영단어 조각→한글) 산출물이라
GIT_PUSH→"GIT푸시"는 수동보정,
나머지 도메인 acronym형은 기존 관례 따름). 실사용 중 위화감 있는 이름은
opcode_name()/opcode_name_kr() case만 교체하면 됨(값만 바뀌므로 하위호환
영향 없음 — 문자열 상수는 사람이 읽는 이름일 뿐 opcode 번호 자체는 불변).
asm_lookup()(어셈블러 mnemonic→opcode 테이블)은 이번 567개를 포함하지