أوفست (علوم الحاسوب)

في علوم الحاسوب ، يُعرَّف الإزاحة داخل المصفوفة أو أي بنية بيانات أخرى بأنها عدد صحيح يُشير إلى المسافة (الإزاحة) بين بداية الكائن وعنصر أو نقطة مُحددة، يُفترض أنها داخل الكائن نفسه. [ 1 ] : 100-103. ويكون مفهوم المسافة صحيحًا فقط إذا كانت جميع عناصر الكائن متساوية الحجم (عادةً ما تُقاس بالبايت أو الكلمات ).

على سبيل المثال، إذا Aكانت عبارة عن مصفوفة من الأحرف تحتوي على "abcdef"، فإن العنصر الرابع الذي يحتوي على الحرف 'd'له إزاحة بمقدار ثلاثة من بداية A.

في لغة التجميع

في هندسة الحاسوب والبرمجة منخفضة المستوى (مثل لغة التجميع )، يشير مصطلح الإزاحة عادةً إلى عدد مواقع العناوين المضافة إلى عنوان أساسي للوصول إلى عنوان مطلق محدد . في هذا المعنى (الأصلي) للإزاحة، تُستخدم وحدة العنوان الأساسية فقط، وهي عادةً البايت ذو 8 بتات ، لتحديد حجم الإزاحة. في هذا السياق، تُسمى الإزاحة أحيانًا بالعنوان النسبي .

في تعليمات نظام IBM System/360 ، كان إزاحة 12 بت مضمنة في بعض التعليمات توفر نطاقًا يتراوح بين 0 و4096 بايت. على سبيل المثال، في تعليمة التفرع غير المشروط (X'47F0Fxxx')، كانت إزاحة xxx السداسية العشرية ذات 12 بت توفر إزاحة البايت من السجل الأساسي (15) للتفرع إليه. كانت الإزاحة الفردية تتسبب في فحص البرنامج (إلا إذا كان السجل الأساسي نفسه يحتوي على عنوان فردي) - نظرًا لأنه كان يجب محاذاة التعليمات على حدود نصف كلمة لتنفيذها دون مقاطعة من البرنامج أو الجهاز .

يصف المثال السابق طريقة غير مباشرة للوصول إلى موقع في الذاكرة بصيغة المقطع:الإزاحة. على سبيل المثال، لنفترض أننا نريد الإشارة إلى موقع الذاكرة 0xF867. إحدى طرق تحقيق ذلك هي تعريف مقطع يبدأ عنوانه من 0xF000، ثم تعريف إزاحة مقدارها 0x0867. علاوة على ذلك، يمكننا أيضًا تحريك المقطع الست عشري للوصول إلى عنوان الذاكرة المطلق النهائي. تجدر الإشارة هنا إلى أنه يمكننا الوصول إلى عنوان الذاكرة المطلق النهائي بطرق متعددة.

لا يكون الإزاحة دائمًا نسبيًا إلى العنوان الأساسي للوحدة، على سبيل المثال: إذا كان لديك فئة وتريد استرداد سمة "اللون" الخاصة بها، فقد تكون الإزاحة 0x0100، ولكن يجب إضافة هذه الإزاحة إلى إزاحة الفئة نفسها، وليس إلى العنوان الأساسي. إذا كانت إزاحة الفئة 0xFF881 والعنوان الأساسي 0x0A100، فإنه لاسترداد سمة "اللون" تُضاف كلتا الإزاحتين إلى العنوان الأساسي: 0x0A100 (الأساسي) + 0xFF881 (الفئة) + 0x0100 (السمة). في النهاية، سيكون عنوان السمة 0x109A81.

انظر أيضاً

مراجع

  1. كيرنيغان، برايان دبليوريتشي، دينيس إم. (1988). لغة البرمجة سي (  الطبعة الثانية). إنجلوود كليفس، نيو جيرسي: برنتيس هول. ISBN 0-13-110362-8. OCLC 318301687 .