أحاول قراءة مستند webassembly ورأيته فقط أذكر دعم النوع i32 و i64 و f32 و f64 فقط
لكن لا يمكنني العثور على أي مكان يذكر نوعًا مركبًا مثل البنية
ليس من الممكن أصلا في webassembly؟ كيف حل مترجم C للبنية الأكبر من 64 بت؟ كيف يمكنني حزم 2 عوامات و 2 ints معًا في المكدس؟
بالنسبة للتركيبات التي تصل إلى 8 بايت ، يمكنك حزمها في عدد صحيح 64 بت.
بالنسبة للهياكل الأكبر ، ستحتاج إلى نقلها من خلال الذاكرة الخطية أو مجموعة من الكرات الأرضية القابلة للتغيير.
لا تزال قيم الإرجاع المتعددة على الرادار بالتأكيد ، وأعتزم ذلك
اكتب اقتراحًا قريبًا جدًا. ومع ذلك ، فهم لا يعطونك هياكل
بشكل مباشر ، لا يزال يتعين عليك تقسيمها إلى قيم فردية لـ
كل شيء عدا المكالمات الوظيفية.
@ rossberg-chromium شكرا جزيلا لك. أعتقد أنه إذا كان لا يحد من حجم وترتيب هذه القيم التي تم إرجاعها ، فيمكننا حلها باستخدام بنية زائفة من خلال اللغة المترجمة. ينبغي أن يكون كافيا
في غضون ذلك ، يمكن تنفيذ البنى باستخدام المؤشرات ، أليس كذلك؟
ما عليك سوى تخصيص البنية الخاصة بك في الذاكرة الخطية والعمل باستخدام المؤشرات.
nidin شكرا لك. هل هذا هو الأسلوب الذي تم تجميعه من خلال لغة C على النحو المعتاد؟
rossberg أي تحديث على دعم الهيكل؟
krisnye ، لا توجد خطط لدعم "الهيكلية" لبرامج wasm التي تستخدم الذاكرة الخطية ؛ من المفترض أن يقوم المترجم بتخفيض البنيات وهيكلة العمليات إلى العمليات البدائية. توجد بعض الخطط لأنواع الهياكل في سياق اقتراح دعم GC ، وليس باستخدام الذاكرة الخطية ، راجع على سبيل المثال https://github.com/WebAssembly/gc. هناك دعم تجريبي للغاية لمجموعة فرعية على الأقل من ذلك في Firefox Nightly ، راجع https://github.com/lars-t-hansen/moz-gc-experiments.
التعليق الأكثر فائدة
لا تزال قيم الإرجاع المتعددة على الرادار بالتأكيد ، وأعتزم ذلك
اكتب اقتراحًا قريبًا جدًا. ومع ذلك ، فهم لا يعطونك هياكل
بشكل مباشر ، لا يزال يتعين عليك تقسيمها إلى قيم فردية لـ
كل شيء عدا المكالمات الوظيفية.