ฉันกำลังมองหาการสร้างเครื่องเสมือนเป็นวิธีที่เป็นอิสระจากแพลตฟอร์มในการรันโค้ดเกมบางส่วน
เสมือนเครื่องที่ฉันรู้ในการเล่นเกมจะค่อนข้างเก่า: Infocom ของZ-เครื่อง , LucasArts' SCUMM , id ซอฟต์แวร์ของ3 Quake ในฐานะนักพัฒนา. net ฉันคุ้นเคยกับCLRและดูคำแนะนำ CILเพื่อดูภาพรวมของสิ่งที่คุณใช้จริงในระดับ VM (เทียบกับระดับภาษา) ฉันได้ขลุกอยู่ที่6502 Assemblerในช่วงปีที่แล้ว
สิ่งนี้คือตอนนี้ที่ฉันต้องการที่จะใช้หนึ่งฉันต้องขุดลึกลงไปอีกนิด ฉันรู้ว่ามี stack based และลงทะเบียน VMs แต่ฉันไม่รู้จริงๆว่าอันไหนดีกว่าในเรื่องอะไรและถ้ามีแนวทางแบบไฮบริดมากกว่านี้ ฉันต้องจัดการกับการจัดการหน่วยความจำตัดสินใจว่าประเภทระดับต่ำเป็นส่วนหนึ่งของ VM และต้องเข้าใจว่าทำไมสิ่งเช่นldstr จึงทำงานเหมือนที่เป็นอยู่
หนังสืออ้างอิงเดียวของฉัน (นอกเหนือจากสิ่งของ Z-Machine) คือมาตรฐานการทำหมายเหตุประกอบของ CLIแต่ฉันสงสัยว่ามีการบรรยายที่ดีกว่าทั่วไป / พื้นฐานสำหรับ VM หรือไม่ โดยพื้นฐานแล้วคล้ายกับDragon Bookแต่สำหรับ VMs ฉันรู้ศิลปะของการเขียนโปรแกรมคอมพิวเตอร์ของ Donald Knuth ซึ่งใช้ VM แบบลงทะเบียน แต่ฉันไม่แน่ใจว่าจะมีการใช้ชุดข้อมูลนั้นอย่างไรโดยเฉพาะอย่างยิ่งเนื่องจากยังไม่เสร็จ
การชี้แจง: เป้าหมายคือการสร้าง VM พิเศษ ตัวอย่างเช่น Z-Machine ของ Infocom มี OpCodes สำหรับตั้งค่าสีพื้นหลังหรือเล่นเสียง ดังนั้นฉันต้องคิดออกว่า VM เป็น OpCodes กับคอมไพเลอร์ที่ใช้สคริปต์ (ภาษา TBD) และสร้าง bytecode จากมันได้อย่างไร แต่ฉันต้องเข้าใจสิ่งที่ฉันกำลังทำอยู่
¹ฉันรู้ว่าเทคโนโลยีสมัยใหม่ช่วยให้ฉันสามารถตีความภาษาสคริปต์ระดับสูงได้ทันที แต่ความสนุกในนั้นอยู่ที่ไหน :) มันยากที่จะ google เพราะ Virtual Machines ในปัจจุบันมักจะเกี่ยวข้องกับการจำลองเสมือนระบบปฏิบัติการ VMWare-type ...
do { switch(opcode) {case OP1: ... case OP2: ...} while (nextop);
แล้วอาจเป็นคอมไพเลอร์ ... และจากนั้นความสนุกก็เริ่มต้น - การปรับให้เหมาะสมเพื่อให้ใช้งานได้จริง
Quake 3
เครื่องเสมือน?