The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Для GCC представлен бэкенд c реализацией WebAssembly"
Отправлено opennews, 05-Мрт-17 09:47 
Для развиваемого проектом GNU инструментария (binutils, gcc, glibc) подготовлен (https://sourceware.org/ml/binutils/2017-03/msg00044.html) рабочий прототип бэкенда (https://github.com/pipcet/asmjs) с поддержкой новой архитектуры - WebAssembly (https://www.opennet.ru/opennews/art.shtml?num=46117). Бэкенд позволяет использовать GCC для компиляции исходных текстов на языках C/C++ в промежуточный код WebAssembly для последующего выполнения в web-браузере или JavaScript Shell. В binutils добавлена поддержка генерации модулей в формате объектных файлов WebAssembly и упаковки/обработки блоков WebAssembly в исполняемых файлах в формате ELF.

Реализована поддержка трёх целевых платформ: asmjs (https://github.com/pipcet/asmjs/blob/everything/asmjs.org) (JavaScript с расширениями Asm.js), wasm32 (https://github.com/pipcet/asmjs/blob/everything/wasm32.org) (WebAssembly с 32-разрядной целочисленной арифметикой) и wasm64 (WebAssembly с 64-разрядной арифметикой с плавающей запятой). На начальной стадии разработки бэкенда были использованы некоторые наработки проекта Emscripten (https://github.com/kripken/emscripten) (компилятор биткода LLVM в JavaScript), но в текущем виде бэкенд не привязан к Emscripten, и все заимствованные из него компоненты заменены на штатные возможности GCC и glibc. В частности, компиляция осуществляется с использованием штатного фронтэнда GCC, предоставляющего все имеющиеся оптимизации, а также специально подготовленного бэкенда, транслирующего внутренний байткод GCC в промежуточный код WebAssembly.


Утилита "GNU as" может применяться для создания объектного файла в формате ELF, в который  при необходимости можно поместить отладочную информацию в формате DWARF. Компоновщик "GNU ld" может быть использован для связывания объектных файлов в исполняемый ELF-файл, который при помощи утилиты  wasmify-wasm32 может быть преобразован в формат модуля WebAssembly, пригодного для загрузки в браузере.


Напомним, что по своим задачам WebAssembly во многом напоминает PNaCl (Portable Native Client) и Asm.js. Основное отличие от Asm.js состоит в том, что WebAssembly является бинарным форматом, не завязанным на JavaScript и позволяющим выполнять в браузере низкоуровневый промежуточный код. В отличие от PNaCl, промежуточный код WASM не является машинным кодом и не изолирован в отдельной виртуальной машине, а выполняется с похожим на JavaScript уровнем изоляции. Среди основных задач WebAssembly выделяется обеспечение переносимости между браузерами, предсказуемость поведения и идентичности выполнения кода на разных платформах. Использование WebAssembly также позволит существенно сократить размер приложений, благодаря компактному промежуточному коду, и увеличить скорость декодирования.


URL: https://sourceware.org/ml/binutils/2017-03/msg00044.html
Новость: http://www.opennet.ru/opennews/art.shtml?num=46136

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру