ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
22 июля
1062577 Топик полностью
fk0, легенда (19.12.2020 13:28, просмотров: 277) ответил RxTx на WebAssembly - вторая инкарнация Java
Или третий C#. Но есть отличия. WebAssembly имеет потенциал даже на микроконтроллерах, т.к. байт код так сделан, что даже относительно быстро интерпретируется (без JIT -- может исполняться на МК с гарвардской архитектурой). WebAssembly обеспечивает очень хорошую изоляцию исполняемого кода (sandbox). WebAssembly не накладывает ограничений на средства программирования (языки), WebAssembly не выпускается одной единственной фирмой, не привязывает к решениям только этой фирмы, не 

требует лицензирования (почему Java и C# во многих случаях -- путь в тупик).


Самый быстрый, по заявлениям авторов, интерпретатор WebAssembly:

https://github.com/wasm3/wasm3

∼ 8x faster than other known wasm interpreters ∼ 4-5x slower than state of the art wasm JIT engines ∼ 12x slower than native execution


Рекомендую к чтению описание архитектуры. Использует шитый код, как forth: байткод преобразуется в свой внутренний (вероятно, с более широким набором инстркрий) код, который заменяется шитым кодом и так исполняется. Впрочем, развивая мысль, интерпретатор чего угодно можно сделать так. Я же изначально хотел подчеркнуть, что сам байткод достаточно оптимальный для прямой интерпретации (с кучей switch-case). Не нужно декодировать какие-то номера регистров вшитые в код и т.п.


Относительно мелкий интерпретатор, который может поместиться в микроконтроллер (~85кБайт):

https://github.com/bytecodealliance/wasm-micro-runtime

[ZX]