المتغيرات في دلفي . ما هي، كيف ولماذا ؟
#4
السلام عليكم و رحمة الله و بركاته
- أرأيت لماذا قلت أسئلة بسيطة تحتاج توضيح مفاهيم[صورة: icon10.gif]...
1- سأشرح ببساطة و بشكل سطحي , نكتب كود بسيط يجمع متغيرين ذو طبيعة حقيقية (أعداد بدون فاصلة) :
كود :
procedure TForm1.Button1Click(Sender: TObject); Var {متغيرات محلية} A: Integer; B: Integer; C: Integer; begin A:= 17; //إسناد قيمة لـ A B:= 88; //إسناد قيمة لـ B C:= A + B; // جمع المتغيروينA,B ShowMessage('A + B = ' + IntToStr(C)); //عرض المجموع C في رسالة end;

2- تحليل الكود,كيف ينفذ المعالج هذا الكود :
كود :
... MOV EAX,11 // $11 = 17 MOV EDX,58 // $58 = 88 LEA EBX,DWORD PTR DS:[EDX+EAX] // EBX = $11 + $58 = $69 (105) ...

3- الآن , لينفذ المعالج كود معين (مجموعة خطوات) عن طريق RI أو الريجيسترات الداخلية .... الخ
كيف ؟ (حسب الكود الأول في دلفي), يضع القيمة $11 في المسجل Eax (مسجل 32 Bit) يصبح
المسجل هكذا : 0001 0001 = Eax , أيضا المسجل 1000 0101 = Edx
يعني تم تخصيص 32Bit = 4 Byte للمتغير A الذي خزن القيمة 17 فيها .

- الأن النتيجة عدد صحيح A + B , يسند لـ C بهذا الشكل :
كود :
LEA EBX,DWORD PTR DS:[EDX+EAX]
1001 0110 = Ebx أي النتيجة التي ستعرض في الرسالة 105

- 64/32/16 bit حسب معمارية المعالج .
I'M Fly Like A G6

الرد


الردود في هذا الموضوع
المتغيرات في دلفي . ما هي، كيف ولماذا ؟ - بواسطة TF6M - 09-08-2012, 02:23 AM

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم