V8 ڈویلپرز نے WebAssembly کے لیے ایک decompiler متعارف کرایا

V8 JavaScript انجن کے ڈویلپرز پیش کیا افادیت wasm-decompile، جو آپ کو انٹرمیڈیٹ بائنری نمائندگی کو ڈی کمپائل کرنے کی اجازت دیتا ہے۔ ویب ایسوسی ایشن جاوا اسکرپٹ اور سی کی یاد دلانے والی ایک پڑھنے کے قابل سیڈو زبان میں۔ مجوزہ چھدم زبان سمجھنے میں بہت آسان ہے اور ".wat" فارمیٹ میں WebAssembly کی متنی نمائندگی کے مقابلے میں دستی تجزیہ کے لیے زیادہ موزوں ہے، جو کہ اعلیٰ سطحی زبانوں کے مقابلے اسمبلی کی زبان کے قریب ہے۔ اس صورت میں، decompilation مکمل طور پر ممکن حد تک Wasm نمائندگی کی عکاسی کرتا ہے۔

ڈی کمپائلر شامل ٹول کٹ میں شامل ہے۔ ڈبلیو اے بی ٹی، جو WebAssembly کی بائنری اور ٹیکسٹ نمائندگی کے درمیان ترجمہ فراہم کرتا ہے، نیز wasm فائلوں کی تجزیہ، پروسیسنگ، ترمیم اور تصدیق کرتا ہے۔ WABT بھی ایک افادیت تیار کر رہا ہے۔ wasm2c، جو wasm فائلوں کو مساوی C کوڈ میں ڈی کمپائل کرنے کی اجازت دیتا ہے جسے C کمپائلر کے ذریعہ مرتب کیا جاسکتا ہے ، لیکن یہ "wat" کی متنی نمائندگی سے پڑھنے کی اہلیت کے لحاظ سے زیادہ مختلف نہیں ہے۔

مثال کے طور پر، اصل C فنکشن 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:float, b:float, c:float},
b:{ a:float, b:float, c:float }):float {
aa *ba + ab * bb + ac * bc واپس کریں۔
}

جبکہ ٹیکسٹ فارمیٹ ".wat" میں تبدیلی اس طرح نظر آئے گی۔

(func $dot (type 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 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))))))

ماخذ: opennet.ru

نیا تبصرہ شامل کریں