{"id":437,"date":"2013-06-24T13:35:36","date_gmt":"2013-06-24T11:35:36","guid":{"rendered":"http:\/\/pockemul.free.fr\/?p=437"},"modified":"2019-06-29T16:13:37","modified_gmt":"2019-06-29T14:13:37","slug":"pockemul-online","status":"publish","type":"post","link":"https:\/\/pockemul.com\/index.php\/2013\/06\/24\/pockemul-online\/","title":{"rendered":"PockEmul Online"},"content":{"rendered":"<p>PockEmul tourne d\u00e9j\u00e0 sur plusieurs plateforme , Windows, OS X, Linux, Android. Il ne manque que le Web.<!--more--><br \/>\nDepuis quelques temps commencent \u00e0 appara\u00eetre des \u00e9mulateurs en Javascript qui sont plut\u00f4t fonctionnels et on a m\u00eame vu un \u00e9mulateur JS faire tourner un Linux. Les machine virtuelles Javascript commencent \u00e0 \u00eatre suffisamment puissantes.<br \/>\nAlors il suffit de r\u00e9\u00e9crire en PockEmul en javascript me direz vous, et vous aurez raison. Seulement, si PockEmul est multi plateforme, il l&#8217;est avec\u00a0<strong>exactement <\/strong>le m\u00eame code source. De plus je ne me vois pas re d\u00e9velopper en javascript les centaines de milliers de lignes de codes , PockEmul est devenue trop imposant.<br \/>\nAlors j&#8217;ai cherch\u00e9 une autre solutions &#8230; et j&#8217;ai peut \u00eatre trouv\u00e9 un truc int\u00e9ressant.<br \/>\nIl s&#8217;agit des projets LLVM et EMSCRIPTEN .<br \/>\nLLVM est une architecture de compilation qui permet de produire du code pour une machine virtuelle de bas niveau. Ce code est appel\u00e9\u00a0<em>bitcode<\/em>.<br \/>\nEMSCRIPTEN permet de prendre ce\u00a0<em>bitcode <\/em>et de l&#8217;int\u00e9grer dans un code javascript d&#8217;un \u00e9mulateur de machine virtuelle.<br \/>\nBon, mon explication est un peu succincte, mais je vous laisse faire les recherches qui vont bien si cela vous int\u00e9resse.<br \/>\nDONC , en r\u00e9sum\u00e9, je prend le code source C++ de PockEmul, je le compile avec LLVM, j&#8217;obtient un gros fichier bitcode, que je passe ensuite dans EMSCRIPTEN qui produit un gros fichier HTML.<br \/>\nConcept int\u00e9ressant donc, il reste donc \u00e0 tester.<br \/>\nEh bien j&#8217;ai tester. Un petit Proof of Concept avec, pour commencer, un seul pocket, mais tout le framework PockEmul.<br \/>\nBon, \u00e7a n&#8217;a pas pris 3 secondes, car il y a tout de m\u00eame quelques modification de code \u00e0 faire.<br \/>\nEn effet , pour ne prendre qu&#8217;un seul exemple, il n&#8217;y a pas de multi-threading en javascript.<br \/>\nAu final j&#8217;ai du ajouter quelques dizaines de lignes de codes avec des directives de compilations. Donc une charge de travail plut\u00f4t limit\u00e9e.<br \/>\nET CA MARCHE !!!!!!!!!!!!!!!!!<br \/>\nBon ce n&#8217;est qu&#8217;un Proof of Concept, mais c&#8217;est prometteur.<br \/>\nD\u00e9s que j&#8217;aurai un peu peaufin\u00e9 cela, je mettrai une URL.<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone\" src=\"http:\/\/pockemul.com\/forum\/emscripten_2.png\" alt=\"\" width=\"1085\" height=\"672\" \/><\/p>\n","protected":false},"excerpt":{"rendered":"<p>PockEmul tourne d\u00e9j\u00e0 sur plusieurs plateforme , Windows, OS X, Linux, Android. Il ne manque que le Web.<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[58],"tags":[],"class_list":["post-437","post","type-post","status-publish","format-standard","hentry","category-news"],"_links":{"self":[{"href":"https:\/\/pockemul.com\/index.php\/wp-json\/wp\/v2\/posts\/437"}],"collection":[{"href":"https:\/\/pockemul.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/pockemul.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/pockemul.com\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/pockemul.com\/index.php\/wp-json\/wp\/v2\/comments?post=437"}],"version-history":[{"count":1,"href":"https:\/\/pockemul.com\/index.php\/wp-json\/wp\/v2\/posts\/437\/revisions"}],"predecessor-version":[{"id":544,"href":"https:\/\/pockemul.com\/index.php\/wp-json\/wp\/v2\/posts\/437\/revisions\/544"}],"wp:attachment":[{"href":"https:\/\/pockemul.com\/index.php\/wp-json\/wp\/v2\/media?parent=437"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/pockemul.com\/index.php\/wp-json\/wp\/v2\/categories?post=437"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/pockemul.com\/index.php\/wp-json\/wp\/v2\/tags?post=437"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}