سؤال

وأنا أعلم أن الملفات التنفيذية تحتوي على تعليمات ولكن ما هي بالضبط هذه التعليمات ؟ إذا كنت ترغب في الاتصال MessageBox API وظيفة على سبيل المثال, ماذا التعليمات تبدو وكأنها ؟

شكرا

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

المحلول

غير الملفات الثنائية التي يفهمها نظام التشغيل. سيحتوي تنفيذ الفروع التي لديها بيانات فيها. يستخدم Windows شكل PE . تنسيق PE قسما التي لديها تعليمات آلة . هذه التعليمات هي مجرد أرقام التي تنظم في تسلسل ويفهمها وحدة المعالجة المركزية.

ودعوة وظيفة لMESSAGEBOX ()، ستكون سلسلة من التعليمات التي سوف

1) لديها عنوان وظيفة وهو في DLL. يتم وضع هذا العنوان في قبل المجمع

2) تعليمات إلى "دفع" المعلمات على كومة

و3) استدعاء دالة الفعلية

و4) نوعا من تنظيف (يعتمد على اصطلاح استدعاء).

من المهم أن نتذكر أن ملفات EXE هي مجرد خصيصا ملفات تنسيق. أنا لا أميل لها التفكيك بالنسبة لك، ولكن يمكنك محاولة ترجمة التعليمات البرمجية الخاصة بك، ثم فتح EXE الخاص في الاستوديو البصري لرؤية التفكيك.

نصائح أخرى

وهذا هو السؤال المتضخمة إذا كنت من أي وقت مضى رأى واحد. ولكن، وسأحاول قصارى جهدي لتقديم لمحة عامة. في قابل للتنفيذ ثنائي هناك يسمى "رموز بايت" هذه الأشياء، رموز بايت ليست سوى represtation عرافة من تعليمات. عادة يمكنك "البحث عن" رموز بايت وتحويلها إلى تعليمات الجمعية. فمثلا: التعليمات:

mov ax, 2h

لقد تمثيل رمز بايت:

B8 02 00

والحصول على تحميل رموز بايت في ذاكرة الوصول العشوائي والتي تنفذها processer لأن ذلك هو في "اللغة". لا أحد عاقل أن أعرف البرامج في رمز بايت، فإنه سيكون مجرد wayyyy إلى تعقيدا. الجمعية هو ... متعة بما فيه الكفاية كما هو. كلما قمت ترجمة برنامج بلغة عالية المستوى لديها لاتخاذ التعليمات البرمجية الخاصة بك وتحويلها إلى تعليمات الجمعية، أنت فقط تخيل كيف المهترئ التعليمات البرمجية ستبحث بعد أن يجمع ذلك. لا تفهموني خطأ، المجمعين كبيرة، ولكن تفكيك برنامج C ++ مع المؤسسة الدولية للتنمية برو مجانية، وسوف نرى ما أتحدث عنه. وهذا هو التنفيذية باختصار، هناك بالتأكيد الكتب التي كتبت حول هذا الموضوع. أنا لست خبير API ويندوز، ولكن شخص آخر يمكن أن تظهر لك ما التعليمات ستبدو للدعوة ويندوز API "MESSAGEBOX". وينبغي أن يكون فقط بضعة أسطر من الجمعية.

ما هو رمز مكتوب (في C أو بعض اللغات الأخرى) ترجمة من قبل مترجم إلى نوع خاص من اللغة تسمى الجمعية (حسنا, رمز الجهاز ، لكنهم قريبون جدا).الجمعية منخفضة جدا على مستوى اللغة التي CPU ينفذ أصلا.عادة لا البرنامج في الجمعية لأنه حتى على مستوى منخفض (على سبيل المثال, كنت لا تريد للتعامل مع سحب بت ذهابا وإيابا من الذاكرة).

لا أستطيع أن أقول عن MessageBox وظيفة على وجه التحديد ، ولكن أعتقد أنه الكثير من التعليمات.تفكر في ذلك:وقد رسم مربع ، وأسلوب ومع ذلك جهاز الكمبيوتر الخاص بك أنماط ، وربط حتى معالج بحيث يحدث شيء عندما ينقر المستخدم على الزر ، يقول Windows (أو أيا كان نظام التشغيل) لإضافتها إلى شريط المهام (أو قفص الاتهام, الخ), و العديد من الأشياء الأخرى.

وذلك يعتمد على اللغة التي كنت تعمل فيها ولكن بالنسبة للكثيرين هو بهذه البساطة ...

msgbox("Your message goes here")

أو

alert("Your message goes here")
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top