The OpenNET Project / Index page

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



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

Исходное сообщение
"Mozilla развивает WASI для использования WebAssembly вне бра..."
Отправлено Ordu, 28-Мрт-19 21:48 
> о возможности использования LLVM BitCode

http://llvm.org/docs/BitCodeFormat.html :

> What is commonly known as the LLVM bitcode file format (also, sometimes anachronistically known as bytecode) is actually two things: a bitstream container format and an encoding of LLVM IR into the container format.
> The bitstream format is an abstract encoding of structured data, very similar to XML in some ways. Like XML, bitstream files contain tags, and nested structures, and you can parse the file without having to understand the tags. Unlike XML, the bitstream format is a binary encoding, and unlike XML it provides a mechanism for the file to self-describe “abbreviations”, which are effectively size optimizations for the content.

Отсюда видно, что это эффективно _промежуточное_ представление, которое создано не с целью его интерпретации, а с целью передачи бэкенду-llvm для дальнейшей компиляции. То есть это сложно-структурированный формат, с кучей информации не относящейся непосредственно к выполнению программы. Использовать его вместо байткода для виртуальной машины -- это идея, которая может и заслуживает рассмотрения, но в процессе этого рассмотрения надо не забыть, что итерпретация/компиляция этого дела в native-код может быть медленной и жрущей кучу ресурсов. Это IR представление само по себе может быть слишком жирным, в том смысле что код скомпилированный в wasm окажется меньше. Упоминание "abbreviations" ясно говорит о том, что без динамического выделения памяти под нужды интерпретатора ничего не выйдет.

А теперь давай глянем на wasm design goals: https://webassembly.github.io/spec/core/intro/introduction.h...

> Fast: executes with near native code performance, taking advantage of capabilities common to all contemporary hardware.

Как с этим у llvm ir?

> Safe: code is validated and executes in a memory-safe [2], sandboxed environment preventing data corruption or security breaches.

Я не знаю, насколько это отличает wasm от llvm-ir, поэтому опустим.

> Well-defined: fully and precisely defines valid programs and their behavior in a way that is easy to reason about informally and formally.

Как часто LLVM IR меняется между версиями llvm?

> Hardware-independent: can be compiled on all modern architectures, desktop or mobile devices and embedded systems alike.

wasm проще, значит написать виртуальную машину тоже проще, так ведь? Плюс если он проще, то и виртуальная машина проще и меньше, а значит на более слабых процессорах пойдёт. Как там насчёт запуска llvm на avr?

> Language-independent: does not privilege any particular language, programming model, or object model.

Паритет с llvm-ir?

> Platform-independent: can be embedded in browsers, run as a stand-alone VM, or integrated in other environments.

Тоже наверное паритет?

> Open: programs can interoperate with their environment in a simple and universal manner.

В llvm-ir есть что-нибудь об этом? Мне кажется, что нет, это для него отдельным стандартом придётся определять.

> Compact: has a binary format that is fast to transmit by being smaller than typical text or native code formats.

Это явно не в пользу llvm-ir, для целей которого, как я понимаю, размер .text не играет особой роли.

> Modular: programs can be split up in smaller parts that can be transmitted, cached, and consumed separately.

Сложно сказать, что именно имеется в виду. Давай считать, что паритет.

> Efficient: can be decoded, validated, and compiled in a fast single pass, equally with either just-in-time (JIT) or ahead-of-time (AOT) compilation.

Как у llvm с этим, ты не знаешь?

> Streamable: allows decoding, validation, and compilation to begin as soon as possible, before all data has been seen.

А с этим?

> Parallelizable: allows decoding, validation, and compilation to be split into many independent parallel tasks.

?

> Portable: makes no architectural assumptions that are not broadly supported across modern hardware.

Я не знаю, как там сделано в llvm, но опять же из самых общих соображений, для llvm'а напрашивается иной подход, который позволяет описывать как можно более широкий спектр кода, заточенного под разные архитектуры.

 

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



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

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