6

Kayıt temelli sanal makinelerin bağımsız olarak nasıl çalıştıklarını biliyorum. Her ikisinin de avantajlarını ve dezavantajlarını biliyorum. Bilmek istediğim, bu ikisini birleştirmeyi deneyen biri mi? Bu bir sanal makinenin varlığını net olarak araştırmayı denedim, ancak boşuna. En iyi sonuç, bir hibrid sanal makinede (HyVM) bir makale idi. Böyle bir sanal makine gerçekten bir programlama dili için yaratılmış olsaydı, nasıl çalıştığını anlamak için kaynak koduna bir göz atmak isterdim.Kayıt + yığın tabanlı sanal makine nasıl çalışır?

Belki de birisi böyle bir sanal makineyi bulmak için beni doğru yöne yönlendirebilir veya bu konuyla ilgilenen bir makaleye veya blog gönderisine bağlantı verebilir.

+0

Çok ilginç. Özellikle ne için arıyorsunuz? Hibrid yaklaşımın kesinlikle kayıt tabanlı bir VM veya yığın tabanlı VM üzerinden ne gibi avantajlar sağlayacağını görmek mi istiyorsunuz? Sorunun bana açık değil. –

+0

Bir hibrit sanal makinenin nasıl uygulanacağını anlamaya çalışıyorum. Avantajlar oldukça açık - yığın işlemlerini kullanarak '5 2 3 - +' ifadelerini değerlendirebilirsiniz: 'push 5',' push 2', 'push 3',' sub', 'add'; ve daha sonra sonucu “store eax” gibi bir komut kullanarak bir kayıtta saklayabilirsiniz. Bu size iki tür sanal makinenin avantajlarını sunar. Tüm program x = 5 2 3 - + 'şeklinde yazılır, burada x' bir SSA değişkeni olur. Benim için net olan şey, VM'nin iç yapısıdır - bellekte veya işlemcideki yığın, yığın değerlendirme maliyetini ve çok daha fazlasını içerir. –

cevap

5

Forth'a bakın. Bir VM kullanır, temel olarak yığına dayalıdır ancak değerleri önerdiğiniz şekilde depolamanıza izin verir. Buna ek olarak, VM oldukça küçüktür, bu yüzden onu keşfetmek ve taşımak kolaydır.