الفريق العربي للهندسة العكسية
1.3 ما هو ال preprocess ؟ وما هو ال assemble ؟ وما هو ال compile ؟ وما هو ال linking؟ - نسخة قابلة للطباعة

+- الفريق العربي للهندسة العكسية (https://www.at4re.net/f)
+-- قسم : منتديات البرمجة - Programming Forums (https://www.at4re.net/f/forum-5.html)
+--- قسم : البرمجة بلغة السى و السى بلس بلس ++C & C (https://www.at4re.net/f/forum-17.html)
+--- الموضوع : 1.3 ما هو ال preprocess ؟ وما هو ال assemble ؟ وما هو ال compile ؟ وما هو ال linking؟ (/thread-3859.html)



1.3 ما هو ال preprocess ؟ وما هو ال assemble ؟ وما هو ال compile ؟ وما هو ال linking؟ - R333T - 26-04-2024

[صورة مرفقة: 128383135-210777607283724-8238622407463275907-n.jpg]


رحلة في عالم البرمجة: إتقان أساسيات البرمجة وتطبيقاتها باستخدام لغة C++
 
https://www.youtube.com/playlist?list=PLmOrGO9IfJEcDyuBLOX5AzAqaKxmAKHrq


# الفصل 0 : تمهيد # الفصل 1 :
[صورة مرفقة: mqdefault.jpg]


https://www.youtube.com/watch?v=93NifH1d3kg



اليوم سنتعلم مفاهيم جديدة تطبيقية بفعل تطبيقات على الحاسوب.

وسنتعلم ما هو ال preprocess وما هو ال assemble وما هو ال compile وما هو الlinking.

و لتجربة ذلك التطبيق عندنا ملف اسمه main.cpp فيه البرنامج الرئيسي .

وعندنا مجلد سميته lib وفيه مكتبتنا الخاصة التي تحتوي على جمع وطرح عددين.

وفي المجلد lib فيه ملفين الملف الأول هو header والملف الثاني هو code cpp لتلك المكتبة.
.
الآن أنت لست مطالبًا لتفهم الكود ولكن مطالب لتركز ولتفهم العمليات التي سأقوم بها الآن.

أولاً سأقوم بتغيير الterminal من Powershell إلى git bash وإذا لم يكن لديك git bash في نظامك، فيمكنك تنزيله من git-scm.com.

بعد ذلك سأضيف extension إلى vscode لإخفاء الterminal تلقائيًا .
أريد إذا قمت بالنقر فوق الcode في محرر البرمجية،
فسوف يقوم تلقائيًا بإخفائه ومستكشف الكود على اليسار.




ثم يمكنك استكشاف قائمة الأمر g++ عن طريق تنفيذ الأمر g++ --help.

يمكنك أن ترى أن الاختيار -o هي وضع الoutput في ملف.

وأن الاختيار -c هي لcompile وال assemble ولكن ليس الlink.

ويتم الاختيار -S لcompile فقط ولكن لا يتم assemble أو link.

وأن الاختيار -E لpreprocess فقط و لا compile أو assemble أو link




حسنًا هنا سنقوم بعمل compile جميع الكود c++ فسنبدأ بg++.
ثم سنقوم بوضع مسار جميع الملفات.
ثم نقوم بعمل الاختيار -o يليه اسم البرنامج الذي سيتم عمل له compile.

فهو هكذا في الخفاء سيقوم أوتوماتيكيًا بعمل preprocess وcompile وassemble وlink.
وكما ترى فهي هذه النتيجة أمامك مجموع 10.5 + 5.2 هي 15.7 وطرح 10.5 من 5.2 هي 5.3.

والآن بالخيار -E سنقوم برؤية preprocess فقط.
وكما ترى هذه نتيجة preprocess.

والآن باختيار -S سنقوم بعمل compile فقط من غير assemble ومن غير الlink فهو بالطبيعة سيقوم في الخفاء بعمل preprocess.
والنتيجة هي assembly code.

والآن باختيار -c سيقوم بعمل compile والassemble فقط من غير الlink .
وبطبيعة الحال إذا عمل compile سيقوم في الخفاء بعمل preprocess.
والنتيجة هي ملفات object .o وهي ملفات binary. ويمكنك فتحها باي برنامج Hex Editor.
وبالطبع إذا عمل compile كامل يجب علينا فتحه ببرنامج Hex Editor لتحليله.
أو بأي برنامج تحليل كـ ollyDBG، x64dbg، IDA Pro.

 nice