← 목록
기타 2026-07-08 4KB 읽기 5분

ISA729 opcode 이름 미매핑 567개 전수 명명 — 완결

개요

crownyc.c(CrownyOS/crownyc, 정본) 실측 스펙 docs/ISA729_IMPL.md 기준, 구현된 opcode 924개 중 영문 mnemonic·한글명이 둘 다 비어 트레이스에서 ???로 표시되던 567개 opcode 전수에 이름을 부여했다. 공개 스펙 문서의 "이름누락" 컬럼을 567 → 0으로 완결.

무엇을 했는지

  1. 명명표 생성: docs/ISA729_IMPL.md의 이름누락=Y 567행에서 opcode
번호·소스줄·코멘트를 추출. 대부분(549/567)의 코멘트가 이미 TOKEN — 설명 형식으로 영문 mnemonic 후보를 내장하고 있어 leading-token 추출로 처리, 코멘트가 없는 9건은 crownyc.c 소스를 직접 읽어 확인 (예: opcode 700 CELL_NEIGHBORS, opcode 856 FILE_SOCKET_SEND — 이미 CLAUDE.md에 "파일소켓전송"으로 문서화되어 있던 것과 합치). 한글명은 영단어 조각(약 250개, 기존 코드베이스 관례 기반) → 한글 매핑 사전으로 자동 생성. 처리 스크립트: 세션 스크래치패드 gen_naming.pl (Perl, 일회성 데이터변환 도구).
  1. 충돌 해소:
- 영문명: 신규 567개가 기존 매핑 357개(정확히는 "이름누락=N"인 실제 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 임베드 관례를 그대로 따름.
  1. crownyc.c 적용: opcode_name()(라인~5112)·opcode_name_kr()
(라인~4805) 두 함수 내부에만 case 567개씩 추가(다른 코드 무접촉, 기존 case 수정 없음). 삽입은 perl 스플라이스로 처리, 두 함수 밖 변경 0 확인.
  1. 빌드·검증: 임시경로 `cc -O2 crownyc.c -lm -framework Security
-framework CoreFoundation 빌드 → --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.
  1. 스펙 재생성: tools/isa729_spec_gen.sh 재실행 →
docs/ISA729_IMPL.md "이름 미매핑" 567 → 0 확인. 동일 파일을 crowny-hansunc/public/ISA729_IMPL.md에 복사, curl 200 + 크기일치 확인(hansunc.crowny.org:9763).
  1. npm 게시: @crowny/crownyc 11.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개를 포함하지
않음 — 헌법 범위(두 함수만 편집)를 지키기 위해 의도적으로 무접촉. 필요시 별도 작업으로 확장 가능.