Design: البيانات الأولية و endiannes

تم إنشاؤها على ٣ سبتمبر ٢٠١٦  ·  6تعليقات  ·  مصدر: WebAssembly/design

لا تذكر المواصفات شيئًا عن طلب البايت الذي يستخدمه i32.load . تحتوي برامج العالم الحقيقي على قسم بيانات لتوفير جداول افتراضية وبيانات ثابتة وما إلى ذلك. تتطلب هذه الأشياء عادةً أنواع قيم مختلفة. ومع ذلك ، فإن WebAssembly يقتصر على تسلسل البايت في قسمه data . بالبايت لا يستطيع المرء محاكاة int32 ، لأنهم لا يعرفون شيئًا عن endiannes.

سيكون من الرائع لو كان لدى WebAssebmly شيئًا مشابهًا للهياكل ومُهيئ الهياكل المشابهة لـ LLVM. إنه لا يحل مشكلة endiannes من البيانات الثابتة فحسب ، بل يمنح أيضًا فرصة لتقليل البيانات الثنائية ، نظرًا لأن الأعداد الصحيحة في قسم البيانات من المحتمل أن تستهلك وحدات بايت أقل في تمثيل LEB128 ، بينما تستهلك دائمًا 4 بايت عند تشفيرها في قسم البيانات.

الحلول الحالية هي:

  • لا تستخدم قسم البيانات ، استخدم وظيفة التهيئة الكبيرة بدلاً من ذلك
  • اخترع تنسيقًا خاصًا ، وقم بتضمين وحدة فك الترميز في برنامج WebAssembly الثنائي ، وتشغيله من وظيفة start

التعليق الأكثر فائدة

هناك مزايا مهمة تتمثل في عدم الاضطرار إلى التعامل مع العديد من العناصر الداخلية عبر النظام البيئي ، ويُعتقد أن احتمال وجود بنية وحدة المعالجة المركزية التي لا تتمتع على الأقل بدعم فعال لعمليات الوصول الصغيرة التي أصبحت شائعة في المستقبل المنظور منخفضة للغاية.

ال 6 كومينتر

WebAssembly القليل من الهند. يبدو أن AstSemantics.md لا يذكر هذا ؛ لقد قدمت الآن https://github.com/WebAssembly/design/pull/787 لتصحيح ذلك.

إنه مذكور هنا وهنا ومختبر هنا .

فكرة وجود بيانات LEB128 المشفرة في قسم البيانات مثيرة للاهتمام. هناك العديد من الطرق التي يمكن من خلالها القيام بذلك ، إما باستخدام نوع جديد من مُهيئ البيانات ، أو بضغط الطبقة الأولى . قد يساعد ضغط الطبقة الثانية في مقاطع البيانات الكبيرة بشكل عام أيضًا.

حسنا أشكرك. أليس هذا مطلبًا قويًا جدًا؟ لا يوجد أي وحدة معالجة مركزية أعرف أنها تستخدم وحدة المعالجة المركزية الكبيرة ، ولكن إذا ظهر أحدها لسبب ما وأصبح مستخدمًا على نطاق واسع ، فسيتم تشغيل WebAssembly على وحدة المعالجة المركزية هذه مع بعض النفقات العامة.

هناك مزايا مهمة تتمثل في عدم الاضطرار إلى التعامل مع العديد من العناصر الداخلية عبر النظام البيئي ، ويُعتقد أن احتمال وجود بنية وحدة المعالجة المركزية التي لا تتمتع على الأقل بدعم فعال لعمليات الوصول الصغيرة التي أصبحت شائعة في المستقبل المنظور منخفضة للغاية.

يوم السبت ، 3 سبتمبر 2016 الساعة 4:07 مساءً ، Alexey Andreev [email protected]
كتب:

حسنا أشكرك. أليس هذا مطلبًا قويًا جدًا؟ لا يوجد أي وحدة معالجة مركزية
تعرف أن استخدام endian كبير ، ولكن لسبب ما ظهر واحد وأصبح
تستخدم على نطاق واسع ، WebAssembly سيتم تنفيذه على وحدة المعالجة المركزية هذه مع بعض النفقات العامة.

تعد وحدات المعالجة المركزية MIPS و SPARC كبيرة الحجم ، على الرغم من أن SPARC لديها القليل من الأجهزة
الأحمال / المخازن لبعض الوقت الآن ، ولدى MIPS متغيرات صغيرة.

لقد قمنا بتنفيذ دعم كبير في V8 عبر مبادلة endianness الصريحة
رمز ولكن لم تقم بقياس النفقات العامة بعناية حتى الآن.

-
أنت تتلقى هذا لأنك مشترك في هذا الموضوع.
قم بالرد على هذا البريد الإلكتروني مباشرة ، وقم بعرضه على GitHub
https://github.com/WebAssembly/design/issues/786#issuecomment -244548450 ،
أو كتم الخيط
https://github.com/notifications/unsubscribe-auth/ALnq1EEkfh88rAXYByuL9uNcjbsjVnFbks5qmX8agaJpZM4J0Snh
.

سيكون من الرائع لو كان لدى WebAssebmly شيئًا مشابهًا للهياكل ومُهيئ الهياكل المشابهة لـ LLVM.

هذا ممكن بالفعل في WebAssembly بالطريقة نفسها التي يتم إجراؤها في C و C ++: قبل أن تسمى main () وظيفة _start يمكن استدعاء وظائف .init_array. لا أعتقد أن هناك أي شيء يمكن القيام به هنا.

تم الاتفاق مع sunfishcode / titzer على

أعتقد أن هذا قد تم حله.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

jfbastien picture jfbastien  ·  6تعليقات

Artur-A picture Artur-A  ·  3تعليقات

aaabbbcccddd00001111 picture aaabbbcccddd00001111  ·  3تعليقات

JimmyVV picture JimmyVV  ·  4تعليقات

Thaina picture Thaina  ·  8تعليقات