Sanal Makineyi bazı oyun kodlarını çalıştırmak için bağımsız bir platform olarak (aslında komut dosyası yazarak) kurmak istiyorum.
Oyunlarda tanıdığım Sanal Makineler oldukça eski: Infocom'un Z-Machine'i , LucasArts'ın SCUMM'i , id Software'in Quake'i 3 . Bir .net Geliştirici olarak, Aşina olduğum CLR içine ve baktım CIL Talimatları aslında (dil seviyesine vs) bir VM Seviyesi uygulamak ne genel bir bakış elde etmek. Ayrıca geçen sene 6502 Assembler'da biraz dadandım .
Sorun şu ki, bir tane uygulamak istediğim için, biraz daha derine inmem gerekiyor. Yığın tabanlı ve kayıt tabanlı VM'lerin olduğunu biliyorum, ancak hangisinin neyin daha iyi olduğunu ve hangilerinin daha fazla veya hibrit yaklaşımlar varsa daha iyi olduğunu bilmiyorum. Bellek yönetimi ile uğraşmam, hangi düşük seviye tiplerinin VM'nin bir parçası olduğuna karar vermem ve ldstr gibi şeylerin neden böyle çalıştığını anlamam gerekiyor.
Tek referans kitabım (Z-Machine ürünleri dışında) CLI Annotated Standard , ancak VM'ler için daha iyi, daha genel / temel bir ders olup olmadığını merak ediyorum. Temelde Dragon Book gibi bir şey , ancak VM'ler için? Kayıt tabanlı bir VM kullanan Donald Knuth'un Bilgisayar Programcılığı Sanatının farkındayım , ancak bu serinin hala ne kadar uygulanabilir olduğundan emin değilim, özellikle de hala bitmedi mi?
Açıklama: Amaç, özel bir VM oluşturmaktır. Örneğin, Infocom'un Z-Makinesi, Arka Plan Rengini ayarlamak veya bir ses çalmak için OpCodes içerir. Bu yüzden, bir betiği (dil TBD'si) alan ve ondan bir byte kodu üreten derleyiciye, VM'ye OpCodes olarak ne kadar girdiğini ve ondan bir byte kodu oluşturduğumu bulmam gerekiyor, ancak bunun için gerçekte ne yaptığımı anlamam gerekiyor.
Modern Biliyorum, modern teknoloji anında yüksek seviyede bir betik dili yorumlamama izin verecek. Ama bunun neresinde eğlence var? :) Ayrıca Google'a gitmek biraz zor, çünkü Virtual Machines günümüzde sık sık VMWare tipi işletim sistemi sanallaştırma ile ilişkilendiriliyor ...
do { switch(opcode) {case OP1: ... case OP2: ...} while (nextop);
belki bir derleyicidir ... ve sonra eğlence başlıyor - gerçekten çalışmasını sağlamak için optimizasyon
Quake 3
Sanal makine tam olarak nasıl ?