Results 1 to 2 of 2

Thread: emscripten nightmare

  1. #1
    подниматель пингвинов crazy-mike's Avatar
    Join Date
    Nov 2006
    Location
    L'viv
    Posts
    176,134

    Wink emscripten nightmare

    http://emscripten.org/



    ну а теперь - почему собственно nightmare:

    допустим , что у меня есть файл hell.c

    PHP Code:
    #include <stdio.h>
    #include <emscripten.h>

    EM_JS(
      
    void,greeter,(chara),{
        
    document.body.innerHTML="<h3>" UTF8ToString(a) + "</h3>";
      }
    );


    int EMSCRIPTEN_KEEPALIVE myCount() {
      return 
    666;
    }

    int main() {
      
    greeter("прощай , жестокий мир!");
      
    EM_ASM({ 
        
    document.body.appendChild(document.createElement("div").appendChild(document.createTextNode("="+_myCount())));
      });
      return 
    0;

    я его компилирую по emcc ./hell.c -o ./hell.html
    А потом создаю на локальном веб-сервере папку nightmare.
    Копирую туда hell.html , hell.js и hell.wasm
    потом из браузера запускаю http://127.0.0.1/nightmare/hell.html - и всё работает!

    С - скомпилировано в веб-ассемблер. Модуль ( файл hell.wasm ) загружается через hell.js в стартовой страничке hell.html. Вызывается main из hell.wasm.

    Дальше эта злостная main создаёт фунцкию на javascript , удаляет всё содержимое html-странички ( document.body ) и под занавес запускает ещё код на javascript , из которого вызывается функция на С. И всё делается без всяких cwrap.

    Всё работает - другое дело , а какой ценой ?

    PHP Code:
    -rw-rw-r--  1 mike mike 102505 Jul 27 07:59 hell.html
    -rw-rw-r--  1 mike mike 125532 Jul 27 07:59 hell.js
    -rw-rw-r--  1 mike mike    926 Jul 27 07:59 hell.wasm 
    Ну - сам полезно-вредоносный код занимает 926 байт. Но вот "оболочка-запускалка" аж 220 килобайт !!!!!!! Хотя по сравнению с размером Windows 11 какой-нибудь - это ведь никакой роли не играет.
    Last edited by crazy-mike; 07-27-2022 at 12:33 AM.
    Жизнь дается человеку один раз и прожить ее надо так, чтобы не ошибиться в рецептах.
    Строить Асгардию побуждает тьма, посетившая людские души

  2. #2
    подниматель пингвинов crazy-mike's Avatar
    Join Date
    Nov 2006
    Location
    L'viv
    Posts
    176,134

    Default Re: emscripten nightmare

    ну и всю эту радость можно просто в JavaScript компилировать ( без wasm ) - но так оно будет просто очень длинное.


    emcc -sWASM=0 ./hell.c -o ./hell.html
    Жизнь дается человеку один раз и прожить ее надо так, чтобы не ошибиться в рецептах.
    Строить Асгардию побуждает тьма, посетившая людские души

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
Russian America Top. Рейтинг ресурсов Русской Америки. Terms of Service | Privacy Policy Рейтинг@Mail.ru