V8 хөгжүүлэгчид WebAssembly-д зориулсан задлагчийг нэвтрүүлсэн

V8 JavaScript хөдөлгүүрийг хөгжүүлэгчид танилцуулсан ашиглалтын wasm-decompile, энэ нь завсрын хоёртын дүрслэлийг задлах боломжийг олгодог WebAssembly JavaScript болон C-г санагдуулам уншигдахуйц псевдо хэл болгон хувиргана. Санал болгож буй псевдо хэл нь WebAssembly-ийн ".wat" формат дахь текстийн дүрслэлийг бодвол ойлгоход илүү хялбар бөгөөд гараар задлан шинжлэхэд илүү тохиромжтой бөгөөд энэ нь дээд түвшний хэлнээс илүү ассемблер хэлэнд ойр байдаг. Энэ тохиолдолд задлах нь Wasm-ийн дүрслэлийг аль болох бүрэн тусгасан болно.

Декомпилятор орсон хэрэгсэлд багтсан болно WABT, WebAssembly-ийн хоёртын болон текст дүрслэлүүдийн хооронд орчуулга хийх, мөн wasm файлуудыг задлан шинжлэх, боловсруулах, өөрчлөх, шалгах боломжийг олгодог. WABT нь мөн хэрэглүүрийг хөгжүүлж байна wasm2c, энэ нь wasm файлуудыг C хөрвүүлэгчээр эмхэтгэх боломжтой ижил төстэй C код болгон задлах боломжийг олгодог боловч "wat" гэсэн текстийн дүрслэлээс унших чадварын хувьд тийм ч их ялгаатай биш юм.

Жишээ нь, wasm-д хөрвүүлсэн анхны С функц

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

хөвөх цэг(const vec3 *a, const vec3 *b) {
a->x * b->x + буцаана
a->y * b->y +
a->z * b->z;
}

wasm-decompile хэрэгслээр псевдо хэл рүү задлах болно.

функц цэг(a:{ a: хөвөх, б: хөвөх, в: хөвөх},
b:{ a: хөвөх, б: хөвөх, в: хөвөх}): хөвөх {
буцаах a.a * b.a + a.b * b.b + a.c * b.c
}

".wat" текст формат руу хөрвүүлэх нь иймэрхүү харагдах болно

(функ $ цэг (төрөл 0) (парам i32 i32) (үр дүн f32)
(f32.add
(f32.add
(f32.mul
(f32. ачаалах
(local.get 0))
(f32. ачаалах
(local.get 1)))
(f32.mul
(f32. ачааллын офсет=4
(local.get 0))
(f32. ачааллын офсет=4
(local.get 1))))
(f32.mul
(f32. ачааллын офсет=8
(local.get 0))
(f32. ачааллын офсет=8
(local.get 1))))))

Эх сурвалж: opennet.ru

сэтгэгдэл нэмэх