الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيفيه تصغير ملفآت السي

بدأه redfalcon464 في 5 أكتوبر 2008 · 15 رد · 1,565 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

اول شيء كنت اقرآ كل موآضيع الاعضآء ومنهم

GM , Delta , Jaas , Chick

المهم ولكل المبدعين بالمنتدى

المهم ادري الموضوع طرح 2006 وحآولت اكتب رد لكن الموضوع مغلق

فحبيت اطرحه مرة ثانيه

هذآ الموضوع

/index.ph...=88178&st=0

في الرد السآبق لاخ احمد كآن النآتج النهآئي للملف

36 كيلو

لكن الوضع يختلف في المترجم الجديد لمآيكورسفت

الان اصبح 6 كيلو بالوضع Relses

المهم مآاحبطني رد الاخ ديلتآ

هنآ

/index.php?showtopic=88178&view=findpost&p=490696

كيف قآم بهذآ برنآمج اصغر من وآحد كيلو

استطآع تشغيل ملف MP3

طبعآ مضغوط لكن الضغط تقلل نسبه قليله وليست كثيرة

فيآريت اخوي لو تقول الطريقه وهل توجد طريقه لفعل هذآ مع السي

احببت لغه السي لكن بسبب الاخ دلتآ دآئمآ افكر بالدلفي :(

اتمنى ان توجد طريقه وآضحه وآسف اذا كآن الموضوع مخآلف او بدون فآيده

تم تعديل هذه المشاركة بواسطة redfalcon464 في 5 أكتوبر 2008 في 00:01

#2

لن تصدق , برنامج Hello World حجمه 464 KB لا اعرف لماذا ؟

برنامج Equation Solver مبرمج بـ Qt و له GUI و حجمه 41.5 KB

كنت افكر فى هذا الموضوع بالامس تقريبا , لكن انت سبقتنى -_- B)

#3

1- الـSTL والمكتبات والـoptions الاضافية .

2- الـlinker .

3- بهارات اخرى (تلاعب ببنية الـPE) .

ولا علاقة للغة بالأمر إلا في حالة تفعيل الـoptimizations ويمكن اهمال الفرق الذي يحدثه .

حيث يمكن انتاج ملف اصغر عن طريق VC2008 من نفس الكود عن طريق masm32 !

mov eax, dword ptr ds:[0xffdf0308]

jmp dword ptr [eax+0xfc]

#4

آخ عمر زيك والله في برآمج تجد حجمهآ صغير جدآ وتستغرب كثيرآ

المهم اشكرك اخ جيم علىآ ردك لكن تقتدر توضح كيف لاني انوي ان اجرب !!

مثلا كيف اعدل ع الخيآرآت الـ STL + خيآرآت الـ Linker

ومآهي مكونآت الوصفه السريه هذه البهآرآت T_T"

وكيف يحدث فرق وتقليل الحجم ؟!

اتمنى اجد اجآبه كآفيه عندك ولو اني احس ان رآح اغلبك معآي O_o

#5

للرفع ^

#6

طالما نويت ان تجرب فلماذا لم تفعل ؟ ام تنتظر ان اجرب انا ؟

افتح خواص المشروح وجرب اغلاق خواص في الـCompiler او تبويب ++C/C في VS2008 وخواص الـlinker .

اذا لم تفهم معنى option معين ستجد شرحه في MSDN او الـdocumentation مع VS .

راجع خيارات المشروع في هذا المقال ستجد انه لا توجد اي اضافات على الكود الذي كتبته في ملف الـbinary (كأنه مكتوب بـmasm32):

Coding Native Applications

بالنسبة للبهارات فاذا تعلمت جيدا بنية الـPE ستعرف كيف تتلاعب بها وليس هناك قاعدة معينة !

mov eax, dword ptr ds:[0xffdf0308]

jmp dword ptr [eax+0xfc]

#7
redfalcon464 كتب:
احببت لغه السي لكن بسبب الاخ دلتآ دآئمآ افكر بالدلفي :(

ههههه

انظر، لن اقول لك دلفي احسن من C/C++ لانني احب دلفي واهم افكر بباسكال

يمكنك الحصول على ما تريد باي لغة تتقن واذكر رد خبيرنا cipher في تفس الرابط السابق

اقتباس
نقطة مهمة : غالباً المشكلة ليست في اللغة أو في بيئة التطوير ولكنها في المبرمج

عليك ان تعرف جيدا خيارات البيئة التي تعمل عليها مثلما قال GM وتعرف كيف تعصرها لكي تعطيك اضغر حجم ممكن

استخدم مكتبات بديلة خفيفة اما بتطوير مكتبتك الخاصة او استعمال احد المكتبات

سبقان ذكرت في الموضوع السابق

LIBCTINY ولا تنسى قراءة مقال Matt Pietrek حول الموضوع Under the Hood

WCRT اي Win32API based C Runtime Library

ايضا راجع الرابطين

Tiny PE Creating the smallest possible PE executable

Small PE project

ملاحظة:اصغر برنامج ممكن تحصل عليه بلغة التجميع وباستعمال Fasm او يدويا بمعرفة جيدة لبنية الملف التنفيذي

تم تعديل هذه المشاركة بواسطة B.M.AbdelAziZ في 5 أكتوبر 2008 في 18:44

d4baa0.gif
#8

شكرا Delta على الروابط والمكتبات ... كنت ابحث عن احدهم من فترة :D

mov eax, dword ptr ds:[0xffdf0308]

jmp dword ptr [eax+0xfc]

#9

على الاغلب يوجد مكتبات اخرى لكن كوني لااستخدم C/C++ لم ابحث

مارايك GM بتطوير مكتبة جديدة B) تحارب bloatware

اوعلى الاقل Template تسهل الامور على من يريد تطوير تطبيق صغير الحجم

d4baa0.gif
#10

توجد واحدة للويندوز بالفعل ... ntdll.h :D

mov eax, dword ptr ds:[0xffdf0308]

jmp dword ptr [eax+0xfc]

#11
GamingMasteR كتب:
توجد واحدة للويندوز بالفعل ... ntdll.h :D

:lol: تلك قصة اخرى

d4baa0.gif
#12

لمن هو مهتم المسابقة 27 للبرمجة التي تنظمها المجلة الالكترونية Hugi

حول اصغر برنامج يظهر محتوى ملف image.ans مدمج به

اقتباس

Hugi Size Coding Competition 27 - The Resurrection!

This time your task is critical. You must resurrect the Hugi Compo. It's been buried by neglect, and its spirit is floating away. You can save it by creating the world's smallest program that displays the accompanying ANSI file, image.ans.

Nope, you don't get to use the ANSI.SYS driver and merely "type" it. That would be too easy. You must make a standalone program that displays the image. In other words the image must be contained within your program; it cannot be read in from an external file. Furthermore your program cannot return to the operating system until a key is struck.

http://www.hugi.scene.org/compo/

اخر اجل للمشاركة 31/10/2008 (بقي 10 ايام)

d4baa0.gif
#13

هناك مترجمات تجارية متخصصه بهذا الموضوع ومواضيع الـ optimizations بشكل عام , من ضمنها مترجم الـ C++ من Portland Group :

http://www.pgroup.com/products/workpgcc.htm

لا إله الإ الله وحده لا شريك له الملك وله الحمد يحي ويميت وهو على كل شئ قدير

------------------------------------------------------------------------------------------------

gazabigBanner.jpg

------------------------------------------------------------------------------------------------

#14

اثناء البحث , وجدت هذا :Merging PE objects in order to decrease file size, Is there a catch to this method ?

موجود فى الرابط المعلومات التالية ::

ممكن عمل دمج .rdata مع .text فى خيارات الـ Linker كالتالى :

/MERGE:.rdata=.text.

انا لم اجرب هذا , لكن مذكور ان التغييرات طفيفة لكن interesting :D

#15

مثال حي كل برامج Nir Sofer صغيرة الحجم

http://www.nirsoft.net/

مجانية ومنها ماهو مفتوح المصدر

d4baa0.gif
#16

جميل اخ محمد لكن اكثر اهتمآمآت الموقع الفجوال بيسك ..

ع العموم شكرآ لك

تم تعديل هذه المشاركة بواسطة redfalcon464 في 31 أكتوبر 2008 في 21:07

مواضيع مشابهة