Utvecklarna av V8 har presenterat en dekompilator för WebAssembly.

Utvecklarna av JavaScript-motorn V8 har presenterat verktyget wasm-decompile, som möjliggör dekompilering av det mellanliggande binÀra formatet WebAssembly till ett lÀsbart pseudokodsprÄk, som liknar JavaScript och C. Det föreslagna pseudokodsprÄket Àr avsevÀrt enklare att förstÄ och mer anvÀndbart för manuell analys Àn den textliga representationen av WebAssembly i formatet '.wat', som ligger nÀrmare assembler Àn högre nivÄsprÄk. Vid dekompileringen Äterspeglar man i möjligaste mÄn Wasm-representationen.

Dekompilatorn pÄslagen ingÄr i verktygslÄdan WABT, som möjliggör översÀttning mellan binÀra och textuella representationer av WebAssembly, samt analys, bearbetning, modifiering och verifiering av wasm-filer. Inom WABT utvecklas ocksÄ verktyget wasm2c, som möjliggör dekompilering av wasm-filer till motsvarande kod i C-sprÄket, som kan kompileras med en C-kompilator, men som vad gÀller lÀsbarhet inte skiljer sig mycket frÄn den textliga representationen 'wat'.

Till exempel kommer en kompilering till wasm av följande C-funktion

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

float dot(const vec3 *a, const vec3 *b) {
return a. * b. +
a. * b. +
a. * b.;
}

att dekompileras av verktyget wasm-decompile till pseudokodsprÄket

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
}

medan omvandlingen till den textliga formatet '.wat' skulle se ut enligt följande

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

KĂ€lla: opennet.ru

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster