Los desarrolladores de V8 han presentado un descompilador para WebAssembly

Los desarrolladores del motor JavaScript V8 presentaron herramienta wasm-decompile, que permite descompilar la representación binaria intermedia WebAssembly en un pseudo-lenguaje legible, similar a JavaScript y C. El pseudo-lenguaje propuesto es significativamente más fácil de entender y más adecuado para el análisis manual que la representación textual de WebAssembly en el formato «.wat», que está más cerca del ensamblador que de los lenguajes de alto nivel. Además, la descompilación refleja completamente la representación de Wasm siempre que sea posible.

Descompilador activado dentro del conjunto de herramientas WABT, que proporciona la traducción entre representaciones binarias y textuales de WebAssembly, así como análisis, procesamiento, modificación y verificación de archivos wasm. Dentro de WABT también se desarrolla la herramienta wasm2c, que permite descompilar archivos wasm en código equivalente en C, que puede ser compilado por un compilador de C, pero en términos de legibilidad, no difiere mucho de la representación textual «wat».

Por ejemplo, una función en C compilada en wasm

typedef struct { float x, y, z; } vec3;

float dot(const vec3 *a, const vec3 *b) {
return a->x * b->x +
a->y * b->y +
a->z * b->z;
}

será descompilada por la herramienta wasm-decompile en el pseudo-lenguaje

function dot(a:{ a:float, b:float, c:float },
b:{ a:float, b:float, c:float }):float {
return a.a * b.a + a.b * b.b + a.c * b.c
}

mientras que la conversión al formato textual «.wat» se verá de la siguiente manera

(func $dot (type 0) (param i32 i32) (result f32)
(f32.add
(f32.add
(f32.mul
(f32.load
(local.get 0))
(f32.load
(local.get 1)))
(f32.mul
(f32.load offset=4
(local.get 0))
(f32.load offset=4
(local.get 1))))
(f32.mul
(f32.load offset=8
(local.get 0))
(f32.load offset=8
(local.get 1))))))

Fuente: opennet.ru

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster