Design: Как веб-сборка обрабатывает структуру?

Созданный на 26 июн. 2017  ·  8Комментарии  ·  Источник: WebAssembly/design

Я пытаюсь прочитать документ веб-сборки и вижу, что он упоминает только поддержку типов i32, i64, f32, f64

Но я не могу найти места, где упоминается составной тип, такой как struct

Это невозможно изначально в веб-сборке? Как обходной путь компилятора C для структуры размером более 64 бит? Как я могу упаковать в стек 2 числа с плавающей запятой и 2 целых?

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

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

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

937 предоставил бы простое решение для этого, но в настоящее время закрыт, и я не уверен, что кто-нибудь в команде WebAssembly все еще думает об этом.

Для композиций размером до 8 байт вы можете упаковать их в 64-битное целое число.

Для более крупных структур вам необходимо передать их через линейную память или набор изменяемых глобальных объектов.

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

@ rossberg-chromium Большое спасибо. Я думаю, что если он не ограничивает размер и порядок этих возвращаемых значений, мы могли бы обходиться с помощью поддельной структуры на скомпилированном языке. Этого должно быть достаточно

А пока структуры можно реализовать с помощью указателей, верно?

Просто разместите свою структуру в линейной памяти и работайте с указателями.

@nidin Спасибо. Это обычный способ компиляции структуры C в wasm?

@rossberg есть ли обновления по поддержке структуры?

@krisnye , нет планов по поддержке структуры для программ wasm, использующих линейную память; компилятор должен понижать структуры и операции структуры до примитивных операций. Есть некоторые планы для структурных типов в контексте предложения о поддержке сборщика мусора, не использующих линейную память, см., Например, https://github.com/WebAssembly/gc. В Firefox Nightly есть экспериментальная поддержка по крайней мере для части из них, см. Https://github.com/lars-t-hansen/moz-gc-experiments.

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

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

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

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

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

cretz picture cretz  ·  5Комментарии

void4 picture void4  ·  5Комментарии