Devlopè V8 prezante yon decompiler pou WebAssembly

Devlopè motè V8 JavaScript prezante sèvis piblik wasm-dekonpile, ki pèmèt ou dekonpile reprezantasyon binè entèmedyè a asanble entènèt nan yon pseudo-lang lizib ki okoumansman de JavaScript ak C. Pseudo-lang yo pwopoze a pi fasil pou konprann epi li pi apwopriye pou analiz manyèl pase reprezantasyon tèks WebAssembly nan fòma ".wat", ki pi pre lang asanble pase lang wo nivo. Nan ka sa a, dekonpilasyon an reflete reprezantasyon Wasm la otank posib.

Decompiler enkli enkli nan bwat zouti a WABT, ki bay tradiksyon ant binè ak tèks reprezantasyon nan WebAssembly, osi byen ke analiz, pwosesis, modifikasyon ak verifikasyon nan dosye wasm. WABT ap devlope tou yon sèvis piblik wasm2c, ki pèmèt dosye wasm yo dwe dekonpile nan ekivalan C kòd ki ka konpile pa yon C du, men se pa anpil diferan an tèm de lizibilite nan reprezantasyon tèks la nan "wat".

Pou egzanp, fonksyon orijinal C konpile nan wasm

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

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

yo pral dekonpile pa sèvis piblik wasm-decompile nan yon pseudo-lang

pwen fonksyon (a:{ a:flote, b:flote, c:flote },
b:{ a:float, b:float, c:float }):float {
retounen aa * ba + ab * bb + ac * bc
}

pandan y ap konvèsyon an tèks fòma ".wat" ta sanble sa a

(fonksyon $dot (tip 0) (param i32 i32) (rezilta f32)
(f32.add
(f32.add
(f32.mul
(f32.chaj
(local.get 0))
(f32.chaj
(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
(lokal.get 1))))))

Sous: opennet.ru

Add nouvo kòmantè