كيفية تعيين التعليمات الثنائية مرة أخرى إلى البيانات أو التعبيرات باستخدام مكتبة ASM؟

StackOverflow https://stackoverflow.com/questions/4223359

سؤال

أحاول تحليل Java Bytecodes في بنية بيانات وسيطة للاستخدام لاحقًا. تعثرت في ASM. إنه قوي ومستقر. ومع ذلك ، فأنا صعب في ترجمة التعليمات الثنائية إلى تعبير وبيانات جافا العادية. هل يمكن لأي شخص أن يشير إلى اتجاه بالنسبة لي؟

قد تبدو بنية بيانات الصفقة هكذا:

ClassInfo
- FieldInfo
- MethodInfo
-- ForLoopStatement
-- WhileStatement
--- AssignmentExpression
--- FunctionCallExpression
...

في الأساس ، ليس أكثر من مجرد تجريد من لغة جافا.

شكرًا لك.

هل كانت مفيدة؟

المحلول

في DB4O ، كنا نستخدم المسموح به المفارقة مكتبة الانتفاخ لاسترداد AST تم إنشاؤه بالكامل من جسم طريقة. لقد نجحت بشكل جيد بما يكفي بالنسبة لنا ، لكنه لا يعتمد على ASM.

نصائح أخرى

لماذا لا تبقى مع Java Bytecode كما هو وإذا كنت بحاجة إلى شكل قابل للقراءة ، فما عليك سوى تفكيكه؟ على الأقل ، لا يوضح سؤالك لماذا لا يمكن أن يكون Java Bytecode نفسه هيكل البيانات الوسيطة المستخدمة للتخزين.

يحتوي إصدار Java SDK الرسمي على أداة تسمى جافاب الذي يحول bytecode مرة أخرى إلى مصدر جافا. خيار آخر لنفس الوظيفة سيكون جافاد.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top