Design: Исходные данные и порядок следования байтов

Созданный на 3 сент. 2016  ·  6Комментарии  ·  Источник: WebAssembly/design

В спецификации ничего не говорится о том, какой порядок байтов использует i32.load . Реальные программы содержат раздел данных для предоставления виртуальных таблиц, статических данных и т. Д. Для этих вещей обычно требуются разные типы значений. Однако WebAssembly ограничивается последовательностями байтов в своем разделе data . С байтами нельзя эмулировать int32, так как они ничего не знают о порядке байтов.

Было бы неплохо, если бы в WebAssebmly было что-то похожее на структуры и инициализаторы структур, подобные LLVM. Это не только решает проблему с порядком байтов статических данных, но также дает возможность уменьшить двоичные данные, поскольку целые числа в разделе данных, вероятно, будут потреблять меньше байтов в представлении LEB128, тогда как они всегда потребляют 4 байта при кодировании в разделе данных.

Текущие обходные пути:

  • не используйте раздел данных, вместо этого используйте большую функцию инициализатора
  • придумать собственный формат, включить декодер в двоичный файл WebAssembly, запустить его из функции start

Самый полезный комментарий

Отсутствие необходимости иметь дело с множественным порядком байтов в экосистеме дает значительные преимущества, и вероятность того, что архитектура ЦП, которая хотя бы не имеет эффективной поддержки прямого порядка байтов, станет популярной в обозримом будущем, считается очень низкой.

Все 6 Комментарий

WebAssembly работает с прямым порядком байтов. Похоже, AstSemantics.md не упоминает об этом; Теперь я подал https://github.com/WebAssembly/design/pull/787, чтобы исправить это.

Он упоминается здесь и здесь и протестирован здесь .

Интересна идея иметь данные в кодировке LEB128 в разделе данных. Это можно сделать разными способами: либо с помощью нового инициализатора данных, либо со сжатием уровня 1 . Сжатие уровня 2 также может помочь с большими сегментами данных в целом.

Понятно, спасибо. Разве это не слишком сильное требование? Я не знаю ни одного процессора, который использует обратный порядок байтов, но если по какой-то причине он появится и станет широко использоваться, WebAssembly будет выполняться на этом процессоре с некоторыми накладными расходами.

Отсутствие необходимости иметь дело с множественным порядком байтов в экосистеме дает значительные преимущества, и вероятность того, что архитектура ЦП, которая хотя бы не имеет эффективной поддержки прямого порядка байтов, станет популярной в обозримом будущем, считается очень низкой.

В сб, 3 сентября 2016 г., в 16:07, Алексей Андреев [email protected]
написал:

Понятно, спасибо. Разве это не слишком сильное требование? Нет никакого процессора я
знаю, что использует обратный порядок байтов, но если по какой-то причине он появляется и становится
широко используется, WebAssembly будет выполняться на этом процессоре с некоторыми накладными расходами.

Процессоры MIPS и SPARC имеют обратный порядок байтов, хотя SPARC имеет обратный порядок байтов.
загружает / сохраняет в течение некоторого времени, а у MIPS есть варианты с малым концом.

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

-
Вы получаете это, потому что подписаны на эту беседу.
Ответьте на это письмо напрямую, просмотрите его на GitHub
https://github.com/WebAssembly/design/issues/786#issuecomment -244548450,
или отключить поток
https://github.com/notifications/unsubscribe-auth/ALnq1EEkfh88rAXYByuL9uNcjbsjVnFbks5qmX8agaJpZM4J0Snh
.

Было бы неплохо, если бы в WebAssebmly было что-то похожее на структуры и инициализаторы структур, подобные LLVM.

Это уже выполняется в WebAssembly точно так же, как в C и C ++: перед вызовом main () функция _start может вызывать функции .init_array. Не думаю, что здесь есть чем заняться.

Согласен с @sunfishcode / @titzer по

Я считаю, что это решено.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги

Смежные вопросы

JimmyVV picture JimmyVV  ·  4Комментарии

frehberg picture frehberg  ·  6Комментарии

spidoche picture spidoche  ·  4Комментарии

Thaina picture Thaina  ·  8Комментарии

nikhedonia picture nikhedonia  ·  7Комментарии