Udviklerne af V8 har præsenteret en dekompilator til WebAssembly

Udviklerne af JavaScript-motoren V8 bogen "ITIL Foundation. ITIL 4 Edition". Dens opgave er at forklare nøglebegreberne og lægge grundlaget for efterfølgende studier af avancerede programmer. værktøjet wasm-decompile, der gør det muligt at dekompilere det mellemliggende binære format WebAssembly til et læsbart pseud sprog, der minder om JavaScript og C. Det foreslåede pseud sprog er væsentligt nemmere at forstå og mere velegnet til manuel analyse end den tekstlige repræsentation af WebAssembly i formatet «.wat», som er tættere på assembler end på højniveausprog. Dekompileringen afspejler så vidt muligt repræsentationen af Wasm.

Dekomptilator aktiveret til værktøjet WABT, som sikrer oversættelse mellem binære og tekstlige repræsentationer af WebAssembly samt analyse, behandling, modification og verifikation af wasm-filer. Som en del af WABT udvikles værktøjet også wasm2c, der gør det muligt at dekompilere wasm-filer til ækvivalente C-koder, der kan kompilieres med en C-kompilator, men hvad angår læsbarhed adskiller det sig ikke meget fra den tekstlige repræsentation «wat».

For eksempel vil en C-funktion kompilere til 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;
}

blive dekompileret af værktøjet wasm-decompile til pseud sprog

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
}

mens konverteringen til tekstformatet «.wat» vil se således ud:

(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))))))

Kilde: opennet.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster