Die Entwickler von V8 haben einen Decompiler fĂŒr WebAssembly vorgestellt

Die Entwickler der JavaScript-Engine V8 haben vorgestellt ein Tool wasm-decompile, das die Dekompilierung der ZwischenbinarreprĂ€sentation WebAssembly in eine lesbare Zwischensprache ermöglicht, die JavaScript und C Ă€hnelt. Die vorgeschlagene Zwischensprache ist erheblich einfacher zu verstehen und eignet sich besser fĂŒr manuelles Parsing als die Textdarstellung von WebAssembly im Format „.wat“, die nĂ€her an Assembler als an Hochsprachen ist. Bei der Dekompilierung wird nach Möglichkeit die Wasm-Darstellung vollstĂ€ndig widergespiegelt.

Der Decompiler ist Teil des Tools WABT , das die Übersetzung zwischen binĂ€ren und textuellen ReprĂ€sentationen von WebAssembly sowie das Parsen, Verarbeiten, Modifizieren und ÜberprĂŒfen von wasm-Dateien ermöglicht. Im Rahmen von WABT wird auch das Toolwasm2c , das es ermöglicht, wasm-Dateien in Ă€quivalenten C-Code zu dekompilieren, der mit einem C-Compiler kompiliert werden kann, jedoch in Bezug auf die Lesbarkeit nur wenig von der Textdarstellung „wat“ unterscheidet, weiterentwickelt.Beispielsweise hat die in wasm kompilierte C-Funktion

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;
a->z * b->z;
}

wird von der wasm-decompile Utility in eine pseudocode Sprache dekodiert

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
}

wĂ€hrend die Umwandlung in das Textformat ".wat" folgendermaßen aussieht

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

Quelle: opennet.ru

Erwerben Sie zuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz, VPS VDS-Server đŸ”„ Kaufen Sie zuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz, VPS VDS-Server | ProHoster