V8 డెవలపర్లు WebAssembly కోసం ఒక డీకంపైలర్‌ను అందించారు

V8 జావాస్క్రిప్ట్ ఇంజిన్ డెవలపర్లు సమర్పించారు వినియోగ వాస్మ్-డీకంపైల్, ఇది ఇంటర్మీడియట్ బైనరీ ప్రాతినిధ్యాన్ని డీకంపైల్ చేయడానికి మిమ్మల్ని అనుమతిస్తుంది WebAssembly జావాస్క్రిప్ట్ మరియు సిని గుర్తుకు తెచ్చే రీడబుల్ సూడో-లాంగ్వేజ్‌లోకి. ప్రతిపాదిత నకిలీ-భాష అర్థం చేసుకోవడం చాలా సులభం మరియు ".wat" ఆకృతిలో WebAssembly యొక్క పాఠ్య ప్రాతినిధ్యం కంటే మాన్యువల్ పార్సింగ్‌కు మరింత అనుకూలంగా ఉంటుంది, ఇది అధిక-స్థాయి భాషల కంటే అసెంబ్లీ భాషకు దగ్గరగా ఉంటుంది. ఈ సందర్భంలో, డీకంపిలేషన్ వాస్మ్ ప్రాతినిధ్యాన్ని సాధ్యమైనంతవరకు ప్రతిబింబిస్తుంది.

డీకంపైలర్ చేర్చబడింది టూల్‌కిట్‌లో చేర్చబడింది WABT, ఇది WebAssembly యొక్క బైనరీ మరియు టెక్స్ట్ ప్రాతినిధ్యాల మధ్య అనువాదాన్ని అందిస్తుంది, అలాగే wam ఫైల్‌ల పార్సింగ్, ప్రాసెసింగ్, సవరణ మరియు ధృవీకరణ. WABT కూడా ఒక యుటిలిటీని అభివృద్ధి చేస్తోంది వాస్ఎమ్2సి, ఇది వాస్మ్ ఫైల్‌లను సమానమైన సి కోడ్‌గా విడదీయడానికి అనుమతిస్తుంది, ఇది సి కంపైలర్ ద్వారా కంపైల్ చేయబడుతుంది, కానీ "వాట్" యొక్క పాఠ్య ప్రాతినిధ్యం నుండి రీడబిలిటీ పరంగా చాలా భిన్నంగా లేదు.

ఉదాహరణకు, అసలు సి ఫంక్షన్ వాస్మ్‌లో కంపైల్ చేయబడింది

టైప్‌డెఫ్ స్ట్రక్ట్ {ఫ్లోట్ x, y, z; } vec3;

ఫ్లోట్ డాట్ (const vec3 *a, const vec3 *b) {
a->x * b->x +ని తిరిగి ఇవ్వండి
a->y * b->y +
a->z * b->z;
}

వాస్మ్-డీకంపైల్ యుటిలిటీ ద్వారా నకిలీ-భాషలోకి డీకంపైల్ చేయబడుతుంది

ఫంక్షన్ డాట్(a:{ a:float, b:float, c:float },
b:{ a:float, b:float, c:float }):float {
తిరిగి aa * ba + ab * bb + ac * bc
}

".wat" అనే టెక్స్ట్ ఫార్మాట్‌కి మార్చడం ఇలా ఉంటుంది

(func $dot (రకం 0) (param i32 i32) (ఫలితం f32)
(f32.add
(f32.add
(f32.mul
(f32.load
(local.get 0))
(f32.load
(local.get 1)))
(f32.mul
(f32.load ఆఫ్‌సెట్=4
(local.get 0))
(f32.load ఆఫ్‌సెట్=4
(local.get 1))))
(f32.mul
(f32.load ఆఫ్‌సెట్=8
(local.get 0))
(f32.load ఆఫ్‌సెట్=8
(local.get 1))))))

మూలం: opennet.ru

ఒక వ్యాఖ్యను జోడించండి