PockEmul Online

PockEmul tourne déjà sur plusieurs plateforme , Windows, OS X, Linux, Android. Il ne manque que le Web.
Depuis quelques temps commencent à apparaître des émulateurs en Javascript qui sont plutôt fonctionnels et on a même vu un émulateur JS faire tourner un Linux. Les machine virtuelles Javascript commencent à être suffisamment puissantes.
Alors il suffit de réécrire en PockEmul en javascript me direz vous, et vous aurez raison. Seulement, si PockEmul est multi plateforme, il l’est avec exactement le même code source. De plus je ne me vois pas re développer en javascript les centaines de milliers de lignes de codes , PockEmul est devenue trop imposant.
Alors j’ai cherché une autre solutions … et j’ai peut être trouvé un truc intéressant.
Il s’agit des projets LLVM et EMSCRIPTEN .
LLVM est une architecture de compilation qui permet de produire du code pour une machine virtuelle de bas niveau. Ce code est appelé bitcode.
EMSCRIPTEN permet de prendre ce bitcode et de l’intégrer dans un code javascript d’un émulateur de machine virtuelle.
Bon, mon explication est un peu succincte, mais je vous laisse faire les recherches qui vont bien si cela vous intéresse.
DONC , en résumé, je prend le code source C++ de PockEmul, je le compile avec LLVM, j’obtient un gros fichier bitcode, que je passe ensuite dans EMSCRIPTEN qui produit un gros fichier HTML.
Concept intéressant donc, il reste donc à tester.
Eh bien j’ai tester. Un petit Proof of Concept avec, pour commencer, un seul pocket, mais tout le framework PockEmul.
Bon, ça n’a pas pris 3 secondes, car il y a tout de même quelques modification de code à faire.
En effet , pour ne prendre qu’un seul exemple, il n’y a pas de multi-threading en javascript.
Au final j’ai du ajouter quelques dizaines de lignes de codes avec des directives de compilations. Donc une charge de travail plutôt limitée.
ET CA MARCHE !!!!!!!!!!!!!!!!!
Bon ce n’est qu’un Proof of Concept, mais c’est prometteur.
Dés que j’aurai un peu peaufiné cela, je mettrai une URL.

Leave a Reply

Your email address will not be published. Required fields are marked *