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

طريقة لتغيير احجام المتغيرات القياسية

مغلق
بدأه hamada hassan ali في 29 سبتمبر 2005 · 25 رد · 2,174 مشاهدة · في لغة C و ++C
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

ياشباب

انا لما بحب اعمل برنامج من مترجم على الدوس فان حجم البيانات الموجودة داخل المتغير من النوع int يكون 16 بت

هل من الممكن ان اجد دالة يمكننى من خلالها اجعل المتغير int يحجز لى متغير سعته 32 بت حتى لو كان المترجم يعمل على الدوس

وسوال كمان :

كيف عند بناء اى مترجم يتم تحديد مساحة من الذاكرة لكل نوع من انوع المتغيرات

يعنى int يكون 16 بت

والمتغير char يكون 8 بت

كيف اصمم هذه الطريقة

اى عندما ابنى مترجم او مفسر لاى لغة كيف اتحكم انا فى سعة المتغير الذى يتم حجزه
وشكرا

تم تعديل هذه المشاركة بواسطة مصطفى 36a2 في 28 مارس 2014 في 22:32 — السبب: add tags

_____________________________

C Language && Windwos_API

_____________________________

#2

بعد اذن المشرف الكريم ... ممكن اعدل عنوان المشاركة :)

اقتباس
انا لما بحب اعمل برنامج من مترجم على الدوس فان حجم البيانات الموجودة داخل المتغير من النوع int يكون 16 بت

هل من الممكن ان اجد دالة يمكننى من خلالها اجعل المتغير int يحجز لى متغير سعته 32 بت حتى لو كان المترجم يعمل على الدوس

ممكن عن طريق الحيله char far

char far *address32bit;
address32bit=(char far*)0xB8000000;

وبالنسبة

اقتباس
اى عندما ابنى مترجم او مفسر لاى لغة كيف اتحكم انا فى سعة المتغير الذى يتم حجزه

وشكرا

إذا كان متغير عام .. بكل بساطه في مقطع البيانات للبرنامج DS

تحجز مساحة بحجم المتغير مثل int تحجز لها 32 بت .. وعنوان هذة الكتله يكون المتغير

بالنسبة للمتغيرات المحليه.. تحجز عن طريق المكدس

مثل int تحجز بهذة الطريقة : esp+4 = int32 bit

وهكذا..

تم تعديل هذه المشاركة بواسطة JAAS في 2 أكتوبر 2005 في 23:04

http://www.jaascois.com

*************************************************

مجموعة مواضيع - إحتراف البرمجة -

ّ~~~~~~~~~~~~~~~~~~~~~~

البرمجة المتقدمة & الهندسة العكسية & برمجة وأمن الأنظمة

/index.php?showtopic=45002

آخر المواضيع :

+- تحليل جرائم الكمبيوتر -+

أنظمة اليونكس(Solaris,HP, AIX,SCO)وانواع المعالجات

ثغرة SMS لأجهزة الجوال Siemens 3568i !

أخطاء وثغرات البرامج العربية !!!

سلسلة مواضيع - أمن وحماية مواقع الويب -

E البرمجة المتقدمة X للملفات التنفيذية E

سلسلة مواضيع ثغرات الأنظمة وإختراق الأجهزة

**************************************************

<span style='font-size:14pt;line-height:100%'>الإرادة تحـــقق السيـــادة</span>

**************************************************

#3

طبعا ممكن :P بس يا ريت كنت كملت جميلك و حذفت الملاحظة :)

#4
اقتباس
طبعا ممكن  بس يا ريت كنت كملت جميلك و حذفت الملاحظة

كنت حاسس اني نسيت شيء ؟ :)

http://www.jaascois.com

*************************************************

مجموعة مواضيع - إحتراف البرمجة -

ّ~~~~~~~~~~~~~~~~~~~~~~

البرمجة المتقدمة & الهندسة العكسية & برمجة وأمن الأنظمة

/index.php?showtopic=45002

آخر المواضيع :

+- تحليل جرائم الكمبيوتر -+

أنظمة اليونكس(Solaris,HP, AIX,SCO)وانواع المعالجات

ثغرة SMS لأجهزة الجوال Siemens 3568i !

أخطاء وثغرات البرامج العربية !!!

سلسلة مواضيع - أمن وحماية مواقع الويب -

E البرمجة المتقدمة X للملفات التنفيذية E

سلسلة مواضيع ثغرات الأنظمة وإختراق الأجهزة

**************************************************

<span style='font-size:14pt;line-height:100%'>الإرادة تحـــقق السيـــادة</span>

**************************************************

#5

اخى hasan_aljudy و JAAS

مشكورين جدا

كيف اتعلم الاسمبلى 32 بت من اى كتاب

وهل من الممكن ان اجد مترجم مفتوح المصدر يمكننى منه فهم العملية ماشية ازى

وسوال اخر :

انا عشان اصمم مترجم او مفسر محتاج ثلاثة حاجات :

1- كتاب اسمبلى 32 بت ؟

2- كتاب يحتوى جميع الاوامر الخاصة بالمعالج 32 بت ؟

3- ومعرفة اجابة السوال ده ؟

""انا الان صممت مترجم و يتم تحويل الاكواد الى الاسمبلى الخاصة بالمعالج ويتم وضع الكود فى ملف obj كيف يتم تحريره الى ملف exe قالبل للعمل ""

هذا ما ينقصنى ؟

معلش انا طولت عليكم

وشكرا

_____________________________

C Language && Windwos_API

_____________________________

#6

كل ما عليكم هو تحويل الكود إلى ملف COFF او OMF وبعد ذلك يمكن إستخدام linker جاهز مثل الذى ياتى معى مترجم السى بلس بلس او غيره, المهم اولاً هو الوصول إلى ملف object من نوع coff هو OMF.

اما بالنسبة للكتب تستطيع ان تحصل عليها مجانا من إنتل, قبل عامين كانت إنتل توزع الكتب الورقية مجاناً وقد حصلت منها على اربع نسخ, نسخة اعطيتها للمكتبة العامة ونسخة للشركة التى اعمل بها, ونسختين احتفظت بهم واحدة فى العمل واخرى فى البيت, ولكن الكمية انتهت منذ فترة وإن شاء الله إذا تم الاعلان عن توزيع كمية جديده ابلغكم, حالياً يمكن ان تحصل على النسخ الالكترونية عبر مقعهم, ويوجد لديهم كتب تخص جميع المعالجات التى تم إصدارها من شركة انتل...

والسلام عليكم

لا إله إلا الله محمد رسول الله

busbar : يجب ان تدرك انه هناك حد ادنى للمعرفة المطلوبة قبل البدء في عمل أي شئ.

#7
اقتباس
كل ما عليكم هو تحويل الكود إلى ملف COFF او OMF وبعد ذلك يمكن إستخدام linker جاهز مثل الذى ياتى معى مترجم السى بلس بلس او غيره, المهم اولاً هو الوصول إلى ملف object من نوع coff هو OMF.

اما بالنسبة للكتب تستطيع ان تحصل عليها مجانا من إنتل, قبل عامين كانت إنتل توزع الكتب الورقية مجاناً وقد حصلت منها على اربع نسخ, نسخة اعطيتها للمكتبة العامة ونسخة للشركة التى اعمل بها, ونسختين احتفظت بهم واحدة فى العمل واخرى فى البيت, ولكن الكمية انتهت منذ فترة وإن شاء الله إذا تم الاعلان عن توزيع كمية جديده ابلغكم, حالياً يمكن ان تحصل على النسخ الالكترونية عبر مقعهم, ويوجد لديهم كتب تخص جميع المعالجات التى تم إصدارها من شركة انتل...

والسلام عليكم

لماذا يتم تحويله الى ملف coff او omf و كيف استخدم اللينكر الخاص بالفيجوال سى ++

_____________________________

C Language && Windwos_API

_____________________________

#8

عندما تقوم بعمل كمبايلر مهمته هى ان يحول الكود إلى لغة الالة, بينما مهمة الlinker هى دمج الملفات التى قمت بتحويلها إلى لغة الالة إلى ملف تنفيذى او مكتبات dll او OCX الخ, يعنى مثلاُ لو كان عندك برنامج يتكون من 100 ملف لن تقوم بعمل كمبايل لجميع الملفات فى ان واحد, او على الاقل لو قمت بتعديل ملف واحد منها فلن تقوم بعمل كمبايل لجميع الملفات مرة اخرى, لذلك يجب ان تحولها إلى ملفات object غير صالحة للتشغيل إلى بعد دمجها وهذه هى وظيفة الlinker::::

لا إله إلا الله محمد رسول الله

busbar : يجب ان تدرك انه هناك حد ادنى للمعرفة المطلوبة قبل البدء في عمل أي شئ.

#9

ولو سمحت كيف استدعى برنامج اللينكر الخاص بالفيجوال سى ++ او الخاص بالجهاز واحدد له الملف المراد ترجمته من الاسمبلى الى لغة الالة

تم تعديل هذه المشاركة بواسطة hamada hassan ali في 3 أكتوبر 2005 في 02:06

_____________________________

C Language && Windwos_API

_____________________________

#10

يا اخ حماده انصحك تقراء كتاب عن الcompiler construction, اللينكر لا يحول كود اسمبلى إلى لغة الاله, كل ما يفعله اللنكر هو دمج الملفات من نوع coff او OMF(والتى تسمى object files) إلى ملف تنفيذى, اما تحويل الشفرة من الاسمبلى إلى لغة الاله يتم بواسطة الـassembler وهو الذى ينتج ملف الobject, بعد ان تحصل على ملف object من نوع coff او من نوع omf يمكنك إستدعاء اللنكر لتحويلها إلى ملف تنفيذى على النحو التالى:

link /subsystem:console myobject1.obj myobject2.obj ....

والسلام عليكم

لا إله إلا الله محمد رسول الله

busbar : يجب ان تدرك انه هناك حد ادنى للمعرفة المطلوبة قبل البدء في عمل أي شئ.

#11

على فكرة اذا تريد كتاب, فقد وجدت كتابا اسمه Prgramming - Introduction to compilers و هو على ما يبدو لي افضل من الكتب الاخرى حيث انه يدخل في الموضوع مباشرة.

لا اريد ان اطيل فأنا لم أقرأه بعد و لكن اعتقد انه سيفيدك.

للتحميل:

Intorduction to Compilers

تم تعديل هذه المشاركة بواسطة hasan_aljudy في 3 أكتوبر 2005 في 02:25

#12

لو سمحت تا كد من الرابط

بتخرج لى رسالة The page cannot be displayed

اخى احمد غريب مشكور جدا ولكن ملفات omf تصمم عن طريق بناء ملف ووضع البيانات به عن طريق الملفات فى لغة السى صح ام لها طريقة اخرى

تم تعديل هذه المشاركة بواسطة hamada hassan ali في 3 أكتوبر 2005 في 02:29

_____________________________

C Language && Windwos_API

_____________________________

#13

اضغظ بالزر الايمن واختر save target as

لا إله إلا الله محمد رسول الله

busbar : يجب ان تدرك انه هناك حد ادنى للمعرفة المطلوبة قبل البدء في عمل أي شئ.

#14

في البداية كان هناك خطأ في الرابط لكنه يعمل الان ..

على الأقل لما انا جربته كان يعمل.

#15

عادة مترجمات السى والاسمبلى وحتى ديلفى تستطيع إنشاء omf و coff على حسب إختيار المتبرمج, كل واحدة من هذا الانواع لها مميزاتها..

على ما اذكر ملفات omf هى من إصدار شركة بورلاند ولكنى لست متاكد, على كل حال قبل ان تصل لملفات الobject هناك العديد من الخطوات التى يجب ان تمر بها, مثلاً قواعد اللغة التى تريد ان تقوم بتصميها, scanner يمر على الشفرة ويتحقق من انها خالية من الاخطاء واشياء كثيرة, لذلك انصح ان تقراء مواضيع الباشمهندس بهذا الصدد, اذكر انه قد كتب فى هذا الموضوع ولكن لا اذكر اين....

والسلام عليكم

لا إله إلا الله محمد رسول الله

busbar : يجب ان تدرك انه هناك حد ادنى للمعرفة المطلوبة قبل البدء في عمل أي شئ.

#16

انا اعلم انها تعتبر المرحلة اللاخيرة لان لا يمكن تحويل الكود الى الاسمبلى الا بعد التحقق من عدم وجود الاخطاء ولكنى اسأل عن كيفية استدعاء اللاسمبلر الخاص بالمعالج واقول له ترجم هذا الملف وحوله لملف تنفيذى

تم تعديل هذه المشاركة بواسطة hamada hassan ali في 3 أكتوبر 2005 في 03:41

_____________________________

C Language && Windwos_API

_____________________________

#17

الكمبايلر يقوم بتحويل الشفرة من لغة الاسمبلى إلى لغة الالة, لا يعنى ذلك انها اصبحت ملفات تنفيذية, وإنما اصبحت على شكل احاد واصفار

اللنكر يقوم بتجميع جميع الاجزاء المبعثرة من هذه الملفات ويضعها كملف تنفيذى..

مثال بسيط مصنع السيارات يقوم بالحصول على المواد الخام من حديد وبالستك الخ

ويوزعها على فروعة المختلفة لتصنيع المحرك والراديتر والدركسيون الخ, ولكن فى هذه الحلة كلها قطع مبعثرة ولا تستطيع ان تقود المحرك وحده ولا الدركسيون وحد وهكذا

ثم ياتى دور التجميع فيجمع جميع اجزاء السيارة لكى تصبح صاحلة للقياده

ارجو ان تكون الصورة وضحت الان...

والسلام عليكم

لا إله إلا الله محمد رسول الله

busbar : يجب ان تدرك انه هناك حد ادنى للمعرفة المطلوبة قبل البدء في عمل أي شئ.

#18

طيب وضحت الصورة بس المشكلة مازالت قائمة كيف استدعى الاسمبلر و اللينكر الخاص باجهاز او المترجم vc++.net

_____________________________

C Language && Windwos_API

_____________________________

#19

تختار من القائمة compile لتحصل على ملف object وتختار link لتحصل على ملف تنفيذى...

فى لغة الاسمبلى بإستخدام masm32 تكتب ml لتحصل على ملف object ثم تكتب link لتحصل على الملف التنفيذى ...

لا إله إلا الله محمد رسول الله

busbar : يجب ان تدرك انه هناك حد ادنى للمعرفة المطلوبة قبل البدء في عمل أي شئ.

#20

هذا جيد جدا

بس كده يعنى انا لم استطيع ترجمة الملف لا فى حالة وجود مترجم masm 32

انا عاوز يباء المترجم بتاعى منه الى نفسه لا يحتاج الى مترجم اخر لابد من وجوده لمساعدة فى بناء نوع معين من الملفات

_____________________________

C Language && Windwos_API

_____________________________

#21

يا عم ما تعمل هو حد حايشك, انا بس بقول لو إنتا عرفت تعمل كمبايلر الاول يبقى قطعت 90% من المشوار وبعديها اعمل لنكر, وعلى فكره حتى masm32 بتستعمل اللنكر تبع السى بلس بلس, وrandel haidy إلى عمل لغة HLA برضو بيعتمد على masm32; ,وخلى بالك الراجل دا مش سهل, دا بيبرمج من التمانينات يعنى قبل ما نشوف الريموت كنترول..

على كل حال ربنا يوفقك

لا إله إلا الله محمد رسول الله

busbar : يجب ان تدرك انه هناك حد ادنى للمعرفة المطلوبة قبل البدء في عمل أي شئ.

#22

على العموم انا سأ حاول بناء المترجم حتى مرحلة التحويل الى لغة الاسمبلى وبعد كده نبقى نتفق

بس اين اعثر على كتاب يشرح الاسمبلى بكل التعليمات الخاصة بها يعنى مش كلها بس الاغلبية

_____________________________

C Language && Windwos_API

_____________________________

#23

يا حمادة الله يهديك انا رديت على السؤال دا قبل كدا

www.intel.com

www.amd.com

webster.cs.ucr.edu

لا إله إلا الله محمد رسول الله

busbar : يجب ان تدرك انه هناك حد ادنى للمعرفة المطلوبة قبل البدء في عمل أي شئ.

#25

ارحمنــــــــــا يا أخ حمادة....

فيه اختراع عملاق اسمه GOOGLE حفظه الله موجود في خدمة البشرية و العلم بالمجان ابحث عن كل ما تريد بدلاً من تكرار أسئلتك على المنتدى بلا حل جذري .............

Sr. Software Development Engineer
Hulu, LLC
My Blogs

هذا الموضوع مغلق.

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…