لماذا mov تعليمات استخدام الفأس بدلا من اثنين سجلات شريحة مباشرة ؟

StackOverflow https://stackoverflow.com/questions/928082

سؤال

أرى رمز مثل:

mov ax, cs
mov ds, ax
mov es, ax

لماذا لا يمكنني ضغط هذا:

mov ds, cs
mov es, cs

هي الطريقة الأولى أسرع منذ استخدام المجمع التسجيل ؟ ولكن هذا لا يبدو بديهية منذ cs و ds هي الجزء يسجل.أم أن هناك بعض القيود التي أنا على علم ؟

أنا باستخدام nasm بالمناسبة.

هل كانت مفيدة؟

المحلول

لا يمكنك MOV Segment Register على تسجيل القطاع - لا توجد تعليمات لذلك.

نصائح أخرى

لا يوجد سوى مساحة كبيرة في معالج للحصول على Microcode لجميع تعليماتها. لذلك غالبا ما يفضل تعليمات عامة واحدة على العديد من الأغراض الخاصة للنادى من سجلات لبحيرة العمليات النادحة. أيضا، بالنسبة لبعض المعالجات، يكون عدد التعليمات محدودا تماما من خلال الهندسة المعمارية - على سبيل المثال، كان معالج 8080 الأصلي يقتصر على 256 تعليما لأن جميعهم اضطروا جميعا للحصول على رمز المرجع المشفرة في بايت واحد.

انها ليست لغة التجميع حقا ولكن الجهاز الأساسي اللغة الذي يمنع هذه العمليات.

في حين أن الجمعية تتكون من السهل قراءة الكلمات أو فن الإستذكار, وهي تمثل في الواقع تماما مباشرة 1s و 0s من رمز الجهاز.على وحدات المعالجة المركزية x86 كل التعليمات وعادة ما تتكون من سلسلة من البايتات مع الفرد بايت أو حتى بت في البايت لها معنى.بعض البتات تمثل التعليمات آخرين يمثلون معالجة الوضعية ، .في تسجيل معالجة أوضاع هذه أمثلة على بعض البتات التي تمثل محددة السجلات إلى أن المصدر والمقصد من mov التعليمات.

الآن x86 العائلة من المعالجات تعود إلى زمن بعيد إلى 1970s عندما العمارة وحدة المعالجة المركزية كانت أبسط.في تلك الأيام مفهوم مركم كان من الأهمية بمكان - ax هو 16 بت x86 المجمع.جميع الحسابات بنيت لأعلى أو "المتراكمة" في هذا السجل إذا كانت متاحة على جميع التعليمات.غيرها من الأغراض العامة يسجل أكثر يقتصر نطاق الاستخدام.

لأن التعليمات كانت على أساس بايت أردت قليلة بايت لتمثيل تعليم ممكن للحفاظ على تعليمات فك سريع.للحفاظ على العديد من التعليمات قصيرة قدر الإمكان استخدام المجمع يتكون المركزية.

على المزيد من وحدات المعالجة المركزية الحديثة مثل موتورولا 680x0 أكثر الأغراض العامة يسجل لديها المزيد من القدرات التي كانت سابقا حكرا على المجمع.على RISC وحدات المعالجة المركزية جميع السجلات مرنة مثل بطاريات.لقد سمعت أنه في وضع 64 بت الحالي x86/amd64 مجموعة التعليمات هو الآن أقل بكثير مقيدة.

انظر الى مرجع مجموعة تعليمات INTEL ENTEL 2 - 325383-056US سبتمبر 2015 "MOV نقل" العمود "العمود".

يتم ترميز MOV To Secreds فقط 16 بت

mov r/m16, Sreg

و "3.1.1.3 عمود التعليمات في جدول ملخص OPCode" يوضح:

  • R / M16 - كلمة سجل للأغراض العامة أو معامل الذاكرة المستخدمة للتعليمات التي تعد سمة معاملها بحجم 16 بت. سجلات الكلمات العامة للكلمة هي: AX، CX، DX، BX، SP، BP، SI، DI.
  • Sec - سجل القطاع.

هكذا mov ds, cs غير قابل للتنفيذ، كما لا يوجد mov Sreg, Sreg الإصدار.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top