Skip to content

v0.0.169

Choose a tag to compare

@github-actions github-actions released this 28 Aug 19:01
· 93 commits to main since this release

rePIU v0.0.169

이전 릴리스 v0.0.168 이후의 변경입니다. 웹(WebAssembly) 이식 Stage 1~2가 들어가고,
Stage 3~5는 보류로 정리했습니다.

플랫폼 공용 코어가 wasm32로 빌드됩니다

코어 소스를 한 줄도 고치지 않았습니다.

항목 값
repiu_exe 오브젝트 (wasm32) 64
코어 소스 수정 0
엔진 자신의 미해결 심볼 0
repiu_core_probe (wasm32) 9 / 9 통과, 제외된 6개는 이름을 찍음
Windows 회귀 15 / 15, 변화 없음

의존성(SDL3·libchdr·miniz·Zydis)도 Emscripten에서 그대로 빌드됩니다.

인터프리터의 크기를 쟀습니다

pumpipx3의 PIU.EXE를 진입점에서 재귀 하강으로 훑었습니다.

항목 값
명령 74,333 (블록 17,367)
서로 다른 mnemonic 120
서로 다른 (mnemonic, 피연산자 서명) 320
상위 17 mnemonic 누적 87.89%

인터프리터 규모의 기준은 120이 아니라 320입니다 — MOV 하나가 19가지 형태입니다. 다만
상위 17개가 87.89%이므로 점진적으로 세울 수 있습니다.

브라우저에서는 아직 실행되지 않습니다

현재 backend 둘(legacy·dynamic)이 모두 네이티브 x86 위에 서 있어 wasm에 대응 형태가
없습니다. Stage 3(플랫폼 중립 인터프리터)이 그 자리이고, 보류했습니다 — Linux 성능 축이
먼저입니다.

재개 조건은 웹 이식 frontier에 있습니다. 요약하면 둘을
먼저 정해야 합니다: x87 표현(80비트인가) 과 Worker 실행 전제. 둘 다 나중에 바꾸면
인터프리터를 다시 쓰는 일이 됩니다.


rePIU v0.0.169

Changes since v0.0.168. Stages 1 and 2 of the web (WebAssembly) port land, and Stages 3
through 5 are recorded as on hold.

The platform-neutral core builds as wasm32

Not one line of core source was changed.

Item Value
repiu_exe objects (wasm32) 64
Core sources modified 0
Undefined symbols of the engine's own none
repiu_core_probe (wasm32) 9 of 9 passed, with the 6 excluded ones named
Windows regression 15 of 15, unchanged

The dependencies (SDL3, libchdr, miniz, Zydis) build under Emscripten as they are.

The interpreter's size is measured

pumpipx3's PIU.EXE, by recursive descent from the entry point.

Item Value
Instructions 74,333 (17,367 blocks)
Distinct mnemonics 120
Distinct (mnemonic, operand signature) 320
Top 17 mnemonics, cumulative 87.89%

An interpreter is sized by 320, not 120 -- one MOV is 19 forms. But with the top 17 at 87.89%
it can be built incrementally.

It does not run in a browser yet

Both present backends (legacy and dynamic) stand on native x86, which has no wasm form. Stage 3,
a platform-neutral interpreter, is where that goes, and it is on hold -- the Linux performance
axis comes first.

The resume conditions are in the web port frontier. In short, two
things must be settled first: the x87 representation (80-bit or not) and assuming Worker
execution
. Changing either afterwards means writing the interpreter twice.