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

كيف اتعامل مع الداكرة والمخزن ؟

مغلق
بدأه hamada hassan ali في 8 ديسمبر 2005 · 18 رد · 2,734 مشاهدة · في لغة Assembly لأنظمة 16, 32, 64 بت
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

فى حاجة نفسى اعرفها لو سمحتم

فى لغة السى :

int x=0;

هكدا عرفنا متغير

فى الاسمبلى :

x db 10

هكدا عرفنا متغير

1- انا عاوز اعرف كيف احجز مكان من الداكرة لكى اسجل به قيمة ؟

وكيف ان اعرف عناوين الداكرة او التعليمات الدى تتحكم بالداكرة

ارجوكم هدا ما يهمنى جدا هو صناعة متغير

او التحكم فى الداكرة

ياجماعة هده المشكلة مدوخانى اوى

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

المخزن Stack:

=========

يمكن وضع او حدف قيم داخله

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

-

مشكلتى كلها من الداكرة والمنافد

هل من احد يحل لى المشكلة

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

المشكلة التانية :

========

وما هى مسجلات الداكرة الخاصة بmmx و x87 FUP و SSE ?

انتم تعرفون مسجلات الداكرة AX و BX

هل هده الانواع السابقة( MMX و SSE ) لها مسجلات خاصة بها زى AX و BX

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

_____________________________

C Language && Windwos_API

_____________________________

#2
اقتباس
- انا عاوز اعرف كيف احجز مكان من الداكرة لكى اسجل به قيمة ؟

في قسم .data

section.data

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

مثلا لو تريد تحديد بافر ب 1024 ويكون ل word يمكن عمله في قسم ال .data

buffersize: dw [Size of the buffer ex. 1024]

انظر الى طريقه استعمال البافر مثلا

mov [buffersize], 123

هاذا راح يكتب 123 في بدايه البافر

( هل هاذا ماتريده ؟ )

تم تعديل هذه المشاركة بواسطة Qnix في 9 ديسمبر 2005 في 15:14

#3

ليس هدا ما اريده

بس شكرا انت

اضفت لى معلومة جديدة الله يخليك

انا بسال عن كيف اقوم بفحص الداكرة وحجز عنوان 00000:00ff5 لتسجيل قيمة بداخله مثلا

بهده الطريقة

انا عارف ان الداكرة فى 32 بت يكون حجمها 4 جيجا يعنى بما يقابل (0 الى 2 اس 32 )

الداكرة حجمها 4 جيجا لنفرض ان البيوس يقوم بكتابة بياناته من العنوان صفر الى 40 والدوس من 42 الى 80 مثلا

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

سابقا كنت افهم الداكرة تبداء من 00 وتنتهى عند FF ولكن هدا العناوين تحتوى على خدمات الهارد والبيوس والدوس والخ ....

انا الان فهمت التعامل مع الداكرة من ناحية القطاع

ولكن لم افهم ما هو OFFset بالتحديد

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

وهل طريقة MOD R/m او طريقة SIB = Scale index base تفيدنى فى التعامل مع العنا وين

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

انا عاوز اتعامل مع الداكرة

نفسها فحص الداكرة وحفظ البيانات بداخلها

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

تم تعديل هذه المشاركة بواسطة hamada hassan ali في 9 ديسمبر 2005 في 18:37

_____________________________

C Language && Windwos_API

_____________________________

#4

السلام عليكم

انا عاوز استفسر عن شىء

الاول تقنية FPU X87 و MMX و SSE

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

ام استخدم تقنية واحدة منهم

هل يمكننى استخدام SSE دون MMX والعكس

وهل يمكن استخدمهم معا دون FPU

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

وياريت تدلونى

2-الداكرة تبداء من 0 الى 4 جيجا اذن كيف اصل الى عنوان الداكرة

وهل يمكن التعامل مع المتغيرات من خلال المخزن

لو سمحتم اى معلومة عن الداكرة وعناوينها و المخزن Stack

انا اتجننت من ملفات انتل فى شرح المخزن لف ودوران

بس الحمد الله فهمت طريقة Encoding machine كويس

مشكلتى كلها مع الداكرة والمخزن

كيف استخدم الداكرة من 0 الى 4 جيجا

لو سمحتم لو اى احد لديه كتاب يتحدث عن المخزنstack والداكرة كلها يعطنى الرابط بتاعه

شكرا لكم

تم تعديل هذه المشاركة بواسطة hamada hassan ali في 10 ديسمبر 2005 في 22:25

_____________________________

C Language && Windwos_API

_____________________________

#5

السلام عليكم

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

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

ويارؤيت لو فى كتب بتتحدث عن المحزن والداكرة و API بواسطة اسمبلى 32 بت

_____________________________

C Language && Windwos_API

_____________________________

#6

لما تخلص الParser و الScanner الأول ابقى فكر في الCode Generation

Sr. Software Development Engineer
Hulu, LLC
My Blogs

#7

عزيزى الباشمهندس

مشكلتى ليست فى بناء LEX او scaner هدده عملية بسيطة بالنسبة لى مشكلتى هى انى عاوز اعرف ازى استخدم عناوين الداكرة من 0 الى 4 جيجا (ازى)

وما هى فائدة :

1- STACK هل يمكن استخدمه فى حفظ قيم المتغيرات وهل ممكن اقوم بانشاء Stack خاص بالبرنامج بتاعى (new stack)

2- X87- FPU وما هى اهميته

انا فهمت التعامل معهم من ناحية التحكم وCONDTION CONTROL

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

سوال اخر :

بس مشكلتى هى فى بناء متغير ونظام Offset بس :

مادا استخدم لصنع متغير :

هل تكون باستخدام اساليب العنونة MOD REG r/m او SIB = scaling indix base

مشكلتى هى ليست بناء اللغة فعليا بل بناء وتصنيع متغير بس

اما الجرامر والقارىء هده امور سهلة بالنسبة لى

ارجوكم يهمنى جدا موضوع عناوين الداكرة ( 0 الى 4 جيجا (ازى) )

تعاونى معى شويه

يمكن اقدر اشرفكم واصمم شى جديد

تم تعديل هذه المشاركة بواسطة hamada hassan ali في 12 ديسمبر 2005 في 22:12

_____________________________

C Language && Windwos_API

_____________________________

#8

أول ما يبدأ البرنامج, يكون عنده stack و heap و هي أماكن في الذاكرة حجزها لك نظام التشغيل.

الستاك هو في الحقيقة مجرد مساحة في الذاكرة .. تستطيع استخدامها كما تشاء, و لا يوجد شيء في قواعد الاسمبلي ولا حتى في المعالج (حسب معلوماتي) يمنعك من استخدام الـ stack بأي شكل تريد .. يعني هو مجرد مساحة ذاكرة .. خزن فيها اي شي في اي مكان منها ..

عندك الرجستر ESP و EBP

الـ esp يشير الى قمة الـ stack و الـ ebp يشير الى اسفله! و يمكنك طبعا وضع اي شي تريد في هذه الرجسترات فهي تقريبا genera purpose و لا اعتقد ان المعالج ينمعك من تغيير قيمها بأي شكل تريد!

الشي الوحيد اللذي نستخدم هذه الرجسترات من أجله هو تذكر مكان الستاك و كم هي المساحة اللتي حجزناها .. الخ!

هناك اوامر push و pop و هي تقوم بزيادة او انقاص المؤشر esp بأربعه بايتات, و في نفس الوقت تقوم بالكتابة او القراءة من او الى المكان اللذي يشير له الـ esp

#9

جميل جدا

بس كيف استخدم عناوين الداكرة من صفر الى FFFFF او (من 0 الى40 GIGA )

بس وشكرا استاذ باشمهندس واللاستاذ حسن

_____________________________

C Language && Windwos_API

_____________________________

#10

في انظمة 386 فما فوق (بما فيها pentium 4) فإن البرنامج لا يستطيع الوصول الى كافة الاماكن في الذاكرة, بل له اماكن محددة فقط, و اي محاولة للوصول الى عنوان آخر ستنتج General Protection Fault حسب ما أظن .. لست متأكدا كثيرا من هذا الموضوع, و لكن هذه هي الحال, فبرنامجك له ذاكرة محددة خصيصا له فقط.

#11

تقوم بوضع عدد معين في EDS ثم بعدها تقوم باستستخدام EBX

هكذا كنا نعالج مشكلة كون الرجيسترات أصغر من حجم الذاكرة في معالج 86 بس مع الفرق أنا كنا نستخدم ds

مش عارف إذا كان الكلام هذا يطبق على 32 بت

جرب و أرجو أني أكون نفعتك

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#12

سابدا من الغد ان شاء الله كتابته والعمل فيه

بناء مترجم اسمبلى الخاصة بالمعالج تشمل كل تعليمات XMM و SSE2 وX87 FPU

ليكون لك حرية التحكم فى كل شىء يخص المعالج وساعمل على اضافة دعم 64 بت مع 32 بت و 16 بت

وساقوم ببناءه لكى يحاكى المعالج P4

تم تعديل هذه المشاركة بواسطة hamada hassan ali في 13 ديسمبر 2005 في 18:34

_____________________________

C Language && Windwos_API

_____________________________

#13

هل احد موافق

_____________________________

C Language && Windwos_API

_____________________________

#14

بالتوفيق اخ حمادة بس متتاخرش لو سمحت

#15

؟

تم تعديل هذه المشاركة بواسطة CPU Assembler في 15 ديسمبر 2005 في 03:36

#16

يا اخ حمادة لماذا تستخدم معرفين لشخص واحد بالله عليك

CPU Assembler = hamada hassan ali من نفس ال IP و بنفس طريقة التوقيع

Technical Lead Developer

My LinkedIn Profile

اللهم قنى شر الجهل و الجهلاء

( اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ ) {الأنبياء:1}

#17

دلوقي يا أخ حمادة انت و الأخ CPU Assembler ممكن تشتغلوا سوا في موضوع الCompilers أخيراً لقيت حد يساعدك :lol:

Sr. Software Development Engineer
Hulu, LLC
My Blogs

#18

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

تم تعديل هذه المشاركة بواسطة CPU Assembler في 17 ديسمبر 2005 في 14:59

#19
Dim X as Human.Person = CPU Assembler
Dim Y as Human.Person =hamada hassan ali

If X = Y then messagebox.show "عيب اوى لما تكتب و ترد على نفسك من عضوية آخرى"

;)

AlexCard.gif

Business Card

Ahmad Fathy Ahmad

Computer and Systems Department

Faculty of Engineering, Alexandria University

Cellular: +2 010 1461154

E-mail: midoalx@hotmail.com

ICQ: 148481391

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

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