V8 ಅಭಿವರ್ಧಕರು WebAssembly ಗಾಗಿ ಡಿಕಂಪೈಲರ್ ಅನ್ನು ಪ್ರಸ್ತುತಪಡಿಸಿದರು

V8 ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಎಂಜಿನ್‌ನ ಡೆವಲಪರ್‌ಗಳು ಪ್ರಸ್ತುತಪಡಿಸಲಾಗಿದೆ ಉಪಯುಕ್ತತೆ ವಾಸ್ಮ್-ಡಿಕಂಪೈಲ್, ಇದು ಮಧ್ಯಂತರ ಬೈನರಿ ಪ್ರಾತಿನಿಧ್ಯವನ್ನು ಡಿಕಂಪೈಲ್ ಮಾಡಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ ವೆಬ್ಅಸೆಬಲ್ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಮತ್ತು ಸಿ ಅನ್ನು ನೆನಪಿಸುವ ಒಂದು ಓದಬಹುದಾದ ಹುಸಿ ಭಾಷೆಗೆ. ಪ್ರಸ್ತಾವಿತ ಹುಸಿ ಭಾಷೆಯು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ಸುಲಭವಾಗಿದೆ ಮತ್ತು ".wat" ಸ್ವರೂಪದಲ್ಲಿ WebAssembly ನ ಪಠ್ಯ ಪ್ರಾತಿನಿಧ್ಯಕ್ಕಿಂತ ಹಸ್ತಚಾಲಿತ ಪಾರ್ಸಿಂಗ್‌ಗೆ ಹೆಚ್ಚು ಸೂಕ್ತವಾಗಿದೆ, ಇದು ಉನ್ನತ ಮಟ್ಟದ ಭಾಷೆಗಳಿಗಿಂತ ಅಸೆಂಬ್ಲಿ ಭಾಷೆಗೆ ಹತ್ತಿರವಾಗಿದೆ. ಈ ಸಂದರ್ಭದಲ್ಲಿ, ವಿಘಟನೆಯು ವಾಸ್ಮ್ ಪ್ರಾತಿನಿಧ್ಯವನ್ನು ಸಂಪೂರ್ಣವಾಗಿ ಸಾಧ್ಯವಾದಷ್ಟು ಪ್ರತಿಬಿಂಬಿಸುತ್ತದೆ.

ಡಿಕಂಪೈಲರ್ ಆನ್ ಮಾಡಲಾಗಿದೆ ಟೂಲ್ಕಿಟ್ನಲ್ಲಿ ಸೇರಿಸಲಾಗಿದೆ WABT, ಇದು WebAssembly ನ ಬೈನರಿ ಮತ್ತು ಪಠ್ಯ ಪ್ರಾತಿನಿಧ್ಯಗಳ ನಡುವೆ ಅನುವಾದವನ್ನು ಒದಗಿಸುತ್ತದೆ, ಹಾಗೆಯೇ ಪಾರ್ಸಿಂಗ್, ಪ್ರಕ್ರಿಯೆ, ಮಾರ್ಪಾಡು ಮತ್ತು ವಾಸ್ಮ್ ಫೈಲ್‌ಗಳ ಪರಿಶೀಲನೆ. WABT ಸಹ ಉಪಯುಕ್ತತೆಯನ್ನು ಅಭಿವೃದ್ಧಿಪಡಿಸುತ್ತಿದೆ wasm2c, ಇದು ವಾಸ್ಮ್ ಫೈಲ್‌ಗಳನ್ನು ಸಿ ಕಂಪೈಲರ್‌ನಿಂದ ಕಂಪೈಲ್ ಮಾಡಬಹುದಾದ ಸಮಾನವಾದ ಸಿ ಕೋಡ್‌ಗೆ ಡಿಕಂಪೈಲ್ ಮಾಡಲು ಅನುಮತಿಸುತ್ತದೆ, ಆದರೆ "ವ್ಯಾಟ್" ನ ಪಠ್ಯ ಪ್ರಾತಿನಿಧ್ಯದಿಂದ ಓದುವಿಕೆಯ ವಿಷಯದಲ್ಲಿ ಹೆಚ್ಚು ಭಿನ್ನವಾಗಿರುವುದಿಲ್ಲ.

ಉದಾಹರಣೆಗೆ, ಮೂಲ ಸಿ ಕಾರ್ಯವನ್ನು ವಾಸಮ್‌ನಲ್ಲಿ ಸಂಕಲಿಸಲಾಗಿದೆ

typedef struct {ಫ್ಲೋಟ್ 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

ಕಾಮೆಂಟ್ ಅನ್ನು ಸೇರಿಸಿ