Design: ¿Cómo maneja la estructura el ensamblaje web?

Creado en 26 jun. 2017  ·  8Comentarios  ·  Fuente: WebAssembly/design

Intento leer el documento de ensamblaje web y solo veo que menciona el tipo de soporte solo i32, i64, f32, f64

Pero no puedo encontrar ningún lugar que mencione un tipo compuesto como struct

¿No es posible de forma nativa en el montaje web? ¿Cómo se soluciona el compilador de C para la estructura de más de 64 bits? ¿Cómo puedo empaquetar 2 flotadores y 2 pulgadas juntos en la pila?

Comentario más útil

Definitivamente, todavía hay varios valores de retorno en el radar, y tengo la intención de
redacta una propuesta muy pronto. Dicho esto, no te dan estructuras.
directamente, aún tendrá que dividirlos en valores individuales para
todo lo demás menos llamadas a funciones.

Todos 8 comentarios

937 habría proporcionado una solución fácil para esto, pero actualmente está cerrado y no estoy seguro de si alguien en el equipo de WebAssembly todavía está pensando en ello.

Para composiciones de hasta 8 bytes, puede empaquetarlas en un número entero de 64 bits.

Para estructuras más grandes, deberá transferirlas a través de una memoria lineal o un conjunto de globales mutables.

Definitivamente, todavía hay varios valores de retorno en el radar, y tengo la intención de
redacta una propuesta muy pronto. Dicho esto, no te dan estructuras.
directamente, aún tendrá que dividirlos en valores individuales para
todo lo demás menos llamadas a funciones.

@ rossberg-chromium Muchas gracias. Creo que si no limita el tamaño y el orden de esos valores devueltos, entonces podríamos solucionarlo con una estructura falsa mediante el lenguaje compilado. Eso debería ser suficiente

Mientras tanto, las estructuras podrían implementarse usando punteros, ¿verdad?

Simplemente asigne su estructura en la memoria lineal y trabaje con punteros.

@nidin Gracias. ¿Es esa la forma en que C struct compilada en wasm normalmente lo hacía?

@rossberg ¿ alguna actualización sobre el soporte de la estructura?

@krisnye , no hay planes para el soporte de "estructura" para programas wasm que usan memoria lineal; Se supone que el compilador reduce las estructuras y las operaciones de estructura a operaciones primitivas. Hay algunos planes para los tipos de estructuras en el contexto de la propuesta de soporte de GC, sin usar memoria lineal, consulte, por ejemplo, https://github.com/WebAssembly/gc. Hay soporte altamente experimental para al menos un subconjunto de eso en Firefox Nightly, consulte https://github.com/lars-t-hansen/moz-gc-experiments.

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

badumt55 picture badumt55  ·  8Comentarios

aaabbbcccddd00001111 picture aaabbbcccddd00001111  ·  3Comentarios

jfbastien picture jfbastien  ·  6Comentarios

beriberikix picture beriberikix  ·  7Comentarios

artem-v-shamsutdinov picture artem-v-shamsutdinov  ·  6Comentarios