ما هو ASM (كود بايت جافا)؟ شرح المكتبة

ASM هي مكتبة جافا لقراءة وكتابة شيفرة بايت JVM أثناء التشغيل. إليكم ما تفعله، وكيف تعمل، ولماذا تعتمد تعديلات Minecraft عليها.

Librariesby trqUpdated June 4, 2026
Key takeaways
  • ASM هي مكتبة Java لقراءة وتعديل وكتابة شيفرة بايت JVM.
  • تعمل على ملفات ‎.class‎ المترجمة، لذا يمكنها إعادة كتابة فئة دون إعادة تجميعها.
  • تستخدم التعديلات (Mods) ذلك لتصحيح اللعبة المترجمة مسبقًا عند التحميل.
  • يستخدم معظم المطورين (Modders) Mixin، الذي يقع فوق ASM ويخفي التفاصيل.

ASM هي مكتبة جافا لقراءة وتعديل وكتابة شيفرة بايت JVM. تعمل على ملفات .class المترجمة بدلاً من التعليمات البرمجية المصدر، لذا يمكنها فحص أو إعادة كتابة فئة دون الحاجة إلى إعادة تجميعها. تعتمد تعديلات Minecraft عليها لأنها تسمح لهم بتصحيح اللعبة في وقت التحميل، بعد تجميع اللعبة بالفعل.

أين Opal يناسب

Opal هو تعديل Fabric، وتصل تعديلات Fabric إلى كود اللعبة من خلال طبقة التعليمات البرمجية هذه. أنت لا تلمسها مباشرةً: يوفر لك محرك البرمجة النصية طريقة نظيفة لتوسيع Opal دون كتابة التعليمات البرمجية

ما الذي تفعله شركة ايه إس إم فعليًا

يحول ASM فئة مُجمَّعة إلى شيء يمكن للبرنامج تعديله. ملف .class هو مجرد كود بايت، وهي التعليمات التي يشغلها جهاز Java الافتراضي. يحلل ASM هذا الكود البايت، ويمدك بالطرق والحقول، ويسمح لك بإضافة أو إزالة أو تغيير التعليمات. ثم يكتب فئة جديدة وصالحة.

لا يمكن لـ Java العادي القيام بذلك بمفرده. يحول المترجم التعليمات البرمجية المصدرية إلى كود بايت مرة واحدة، وبعد ذلك يصبح كود البايت ثابتًا. يصل ASM إلى كود البايت، وهو الطبقة التي تقع تحت التعليمات البرمجية التي تكتبها عادةً

كيف يعمل

يقرأ ASM فئة باستخدام ClassReader ويكتب فئة باستخدام ClassWriter. بين الاثنين، يزور التعليمات البرمجية أجزاء الفئة ويقرر ما يجب تغييره. هناك طريقتان للقيام بذلك.

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

الطريقةكيف تعملالأفضل لـ
واجهة برمجة التطبيقات للزائرتقوم ببث أحداث الفئة أثناء قراءتهاتعديلات صغيرة وسريعة بذاكرة منخفضة
واجهة برمجة التطبيقات للشجرةتبني نموذج كائن قابل للتحرير للفئةعمليات إعادة كتابة أكبر أو أكثر تعقيدًا

لماذا تستخدم تعديلات Minecraft ذلك

يجب على المُعدّلين تغيير التعليمات البرمجية للعبة لم يكتبوها ولا يمكنهم إعادة تجميعها. اللعبة تأتي مُجمّعة على هيئة فئات، لذا فإن الطريقة الوحيدة للدخول هي على مستوى التعليمات البرمجية البايت، وهذا ما يوفره ASM. يمكن للمود حقن خطاف في طريقة اللعبة، أو إعادة توجيه استدعاء، أو إضافة حقل، كل ذلك عند الإطلاق.

معظم المُعدّلين لا يستدعون ASM مباشرةً. إنهم يستخدمون Mixin، وهو إطار عمل عالي المستوى يقع فوق ASM ويحوّل التعليقات التوضيحية البسيطة إلى تعديلات التعليمات البرمجية البايت الأساسية. أنت تكتب فئة Java صغيرة تصف التغيير، والإطار يقوم بالعمل منخفض المستوى مع ASM نيابةً عنك. تعتمد تعديلات Fabric بشكل خاص على هذا التسلسل.

متى تلمس ASM مباشرةً

نادراً ما تكتب ASM خامًا كمؤلف مود. يظهر ذلك عندما تحتاج الأداة إلى مزيد من التحكم مما يمكن أن تعبر عنه التعليقات التوضيحية، مثل المُحمِّل، أو المُخفي، أو المُصلح الذي يعيد كتابة الفئات بالكامل. بالنسبة لتعديلات اليوم الواحد، فإن طبقة التعليقات التوضيحية الموجودة فوقها كافية، وهي أقل عرضة للأخطاء بكثير.

الأسئلة الشائعة