В8 програмери су представили декомпајлер за ВебАссембли

Програмери В8 ЈаваСцрипт мотора представљени корисност васм-декомпилирати, што вам омогућава да декомпилирате посредни бинарни приказ ВебАссембли у читљив псеудо-језик који подсећа на ЈаваСцрипт и Ц. Предложени псеудо-језик је много лакши за разумевање и погоднији за ручно рашчлањивање него текстуални приказ ВебАссембли-а у формату „.ват“, који је ближи асемблерском језику него језицима високог нивоа. У овом случају, декомпилација одражава Васм репрезентацију што је потпуније могуће.

Децомпилер укључен укључено у комплет алата ВАБТ, који обезбеђује превод између бинарних и текстуалних репрезентација ВебАссембли-а, као и рашчлањивање, обраду, модификацију и верификацију васм датотека. ВАБТ такође развија услужни програм васм2ц, који омогућава васм фајлове да се декомпилишу у еквивалентан Ц код који може да компајлира Ц компајлер, али се не разликује много у погледу читљивости од текстуалног представљања „ват“.

На пример, оригинална Ц функција компајлирана у васм-у

типедеф струцт { флоат к, и, з; } вец3;

флоат дот(цонст вец3 *а, цонст вец3 *б) {
врати а->к * б->к +
а->и * б->и +
а->з * б->з;
}

услужни програм васм-децомпиле ће декомпилирати у псеудо-језик

функција тачка(а:{ а:флоат, б:флоат, ц:флоат},
б:{ а:флоат, б:флоат, ц:флоат}):флоат {
ретурн а.а * б.а + а.б * б.б + а.ц * б.ц
}

док би конверзија у текстуални формат „.ват“ изгледала овако

(функција $дот (тип 0) (парам и32 и32) (резултат ф32)
(ф32.адд
(ф32.адд
(ф32.мул
(ф32.лоад
(лоцал.гет 0))
(ф32.лоад
(лоцал.гет 1)))
(ф32.мул
(ф32.лоад оффсет=4
(лоцал.гет 0))
(ф32.лоад оффсет=4
(лоцал.гет 1))))
(ф32.мул
(ф32.лоад оффсет=8
(лоцал.гет 0))
(ф32.лоад оффсет=8
(лоцал.гет 1))))))

Извор: опеннет.ру

Додај коментар