السلام عليكم
عندما يعمل معالج الIntel بطريقة ال32 بت فانّه ينفذ امر القفز (J؟؟) باستعمال طريقة العنونة النسبيّة (العنونة بالنسبة للرقم الموجود داخل المسجّل PC الذي يحوي عنوان الامر التالي) للقفز الى عنوان محدد.
ما سبب استعمال هذه الطريقة و التي تسمّى بالانكليزية: PC Relative Addressing؟
عندما يعمل معالج الIntel بطريقة ال64 بت فانّه سيتعمل طريقة العنونة النسبيّة في كل الاوامر المتعلّقة بالمتغيّرات.
ما السبب؟ هل هناك فوائد معيّنة من ذلك؟
حقيقة كنت اقرأ كتاب و مرّت عليّ هذه الفقرة بالانكليزية:
اقتباس
In addition
to the IA32 addressing forms, some forms of PC-relative operand addressing are
supported. With IA32, this form of addressing is only supported for jump and
other control transfer instructions (see Section 3.6.3). This mode is provided to
compensate for the fact that the offsets (shown in Figure 3.3 as Imm) are only 32
bits long. By viewing this field as a 32-bit two’s-complement number, instructions
can access data within a window of around ±2.15 × 10
9
relative to the program
counter. With x86-64, the program counter is named %rip.
هناك شيىء غير مفهوم في هذه الجملة:
اقتباسThis mode is provided to
compensate for the fact that the offsets are only 32
bits long.
انا اعلم انّ المعالج عندما يكون قيد التنفيذ بطريقة 32 بت يمكننا الوصول الى 4 GB من الذاكرة ( او 2^32 من العناوين في الذاكرة) ولكن هنا نحن 64 بت يعني توسّعت الذاكرة بشكل رهيب الى 2^64 عنوان!