게임 코드를 실행하는 플랫폼 독립적 인 방법으로 가상 머신을 구축하려고합니다 (본질적으로 스크립팅).
내가 게임에서 알고있는 가상 머신은 Infocom의 Z-Machine , LucasArts의 SCUMM , id Software의 Quake 3과 같은 오래된 머신 입니다. .net 개발자 인 저는 CLR에 대해 잘 알고 있으며 CIL 지침 을 검토하여 실제로 VM 수준 (언어 수준)에서 구현하는 내용에 대한 개요를 얻었습니다. 작년 에 6502 어셈블러 에서 약간의 손을 ve 습니다.
문제는 하나를 구현하기를 원하기 때문에 조금 더 깊이 파고 들어야합니다. 스택 기반 및 등록 기반 VM이 있다는 것을 알고 있지만 실제로 어떤 방법이 더 나은지, 하이브리드 방식이 더 많은지 알 수는 없습니다. 메모리 관리를 처리하고 VM의 일부 하위 유형을 결정하고 ldstr 과 같은 기능이 작동하는 이유 를 이해해야 합니다.
Z-Machine 자료를 제외한 유일한 참고서는 CLI Annotated Standard 이지만 VM에 대한 더 일반적이고 기본적인 강의가 있는지 궁금합니다. 기본적으로 Dragon Book 과 같지만 VM 용입니까? 레지스터 기반 VM을 사용하는 Donald Knuth의 컴퓨터 프로그래밍 기술에 대해 알고 있지만 아직 완성되지 않았기 때문에 해당 시리즈가 얼마나 적용 가능한지 잘 모르겠습니다.
설명 : 목표는 전문화 된 VM을 구축하는 것입니다. 예를 들어 Infocom의 Z-Machine에는 배경색 설정 또는 사운드 재생을위한 OpCode가 포함되어 있습니다. 따라서 OpCodes 대 스크립트 (언어 TBD)를 가져 와서 바이트 코드를 생성하는 컴파일러로 VM에 얼마나 많은 양이 필요한지 알아 내야하지만 실제로는 내가하고있는 일을 이해해야합니다.
¹ 현대 기술을 사용하면 고급 스크립팅 언어를 즉석에서 해석 할 수 있습니다. 그러나 그 재미는 어디에 있습니까? :) 요즘 가상 머신은 종종 VMWare 유형 OS 가상화와 관련되어 있기 때문에 구글에 조금 어렵습니다 ...
do { switch(opcode) {case OP1: ... case OP2: ...} while (nextop);
일 수도 있고 아마도 컴파일러 일 수도 있습니다. 그리고 재미는 실제로 시작하기위한 최적화입니다.
Quake 3
가상 머신 은 정확히 무엇입니까?