كيفية الحصول على قائمة التجميع (Assembly listing) من كود C/C++ في GCC؟
مرحباً بالجميع. أنا أتعلم C++ وأحاول فهم كيف يترجم المترجم (compiler) كودي إلى تعليمات آلية (machine instructions). أريد أن أرى، على سبيل المثال، كيف يتحول حلقة بسيطة (loop) أو استدعاء دالة (function call). أستخدم GCC (g++) على Linux.\n\nجربت العلم `-S`، ويبدو أنه ينشئ ملف `.s`، ولكن هناك الكثير من القمامة — تسميات (labels)، توجيهات `.cfi_*`، أسماء غير مفهومة مثل `.LC0`. حتى ملف `hello.cpp` بسيط:\n\n```cpp\n#include \nint main() {\n std::cout << "Hello";\n return 0;\n}\n```\n\nبعد `g++ -S hello.cpp` في `hello.s` أرى ليس فقط الكود، ولكن أيضاً الكثير من المعلومات الإضافية. كيف يمكنني الحصول على قائمة تجميع نظيفة (clean assembly listing) حيث أرى فقط كود دالتي (function)، بدون كل هذه المعلومات الخدمية (service information)؟\n\nأيضاً يهمني: هل يمكنني رؤية التجميع (assembly) مباشرة في الطرفية (terminal)، دون إنشاء ملف؟ وكيف يمكنني عمل قائمة (listing) مع الكود المصدري (source code) المخلوط؟