سؤال

أنا أعمل على جهاز محاكاة msp430 مجموعة التعليمات.غنو المجمع سوف تتيح لك ترميز تعليمات مثل هذه:

fc0a: 12 10 00 02 rrc &0x0200       
fc0e: 22 11       rra #4        
fc10: 23 52       add #4,#2

تخميني هو أن rrc &0x0200 سوف تجلب من عنوان 0x0200 أداء تدوير ثم كتابة الإجابة مرة أخرى إلى عنوان 0x0200, صحيح ؟ ولكن ما أن rra #4 أفعل ؟ المصدر سيكون فوري 4 أفترض ولكن هناك وجهة بعد العملية ؟ إضافة #4,#2 تجميعها في ما كنت تتوقع (كما 2b10 المصدر = r2, ad = 1b0, dest = r3) ، binutils المجمع على الرغم من لا تعرف ماذا تفعل مع هذه التعليمات.

هل هذه صحيحة التعليمات ؟

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

المحلول

على الرغم من أن هناك لا يبدو أن يكون أي نهائي على الانترنت الإشارة إلى هذا التأثير ، أنا أتفق مع المرجع أن اثنين من الإرشادات التي تظهر (وآخرون) ومن المرجح ليست صالحة, ، على الرغم من أنها تتفق مع الصيغة المحددة في ورقة البيانات.

وبعبارة أخرى, ليس كل مزيج ممكن من الأجزاء المختلفة التي تشكل تعليمات كلمة صالحة.ولا سيما أن العديد المعامل تعليمات الاستخدام الفوري في معالجة الوضع ، والعديد من ضعف المعامل التعليمات التي فوري لمعالجة الوضع الوجهة ربما لا لغويا قابلا للتطبيق.

هناك فقط بضعة تلميحات إلى هذا التأثير في الوثائق ، على سبيل المثال ، في دليل المستخدم ، القسم 3.3.7 (الفوري في معالجة الوضع) ، تعليق يشير "صالحة فقط لمدة مصدر المعامل."(و للمعلومية هذا هو لجميع الحالات العاجلة لمعالجة الوضع ، ليس فقط على المدى القصير اليد الحالات التي يسمح بها R2 أو R3 المستمر الجيل خدعة.)

حقيقة أن المجمع لا تعرف ماذا تفعل مع مثل هذه الرموز أيضا تلميح آخر (على الرغم من أن...بعض disassemblers الحصول على تعثرت بسهولة...).

من أجل التوثيق جمعت أدناه بعض المراجع المفيدة عن MSP430:

نصائح أخرى

في دليل المستخدمين الحاليين، في القسم 3.4.4.2، فإنه لا يوصي باستخدام وضع الفوري (N) في حقل الوجهة لRRA الأمر كما أنه يؤدي إلى "عملية البرنامج لا يمكن التنبؤ بها."

ومن الممكن هم. وعند النظر إلى مجموعة التعليمات على ويكيبيديا، أكواد العمليات ترميز السجل وخيارات مختلفة. لذلك ليست رسم بسيط. يبدو أن الانتاج كنت قد حصلت هو Endian طفيف، لذلك هذا:

fc0a: 12 10 00 02 rrc &0x0200  

ويتوافق مع تعليمات 1012، والتي في ثنائي هو 0001 0000 0001 0010.

وهذا ينهار كما يلي:

6 bits: 0001 00 - fixed; defines the instruction family
3 bits: 00 0    - instruction (RRC)
1 bit : 0       - byte or word parameter (0 = 16 bit parameter; 1 = 8 bit)
2 bits: 01      - addressing mode (01 = indexed;)
4 bits: 0010    - register

وحتى في هذه الحالة تدوير اليمين والتي تحدث في القيمة عند الإزاحة في سجل 2 من عنوان & 0200.

وأنت كنت بحاجة لكسر تعليمات أخرى إلى أسفل بطريقة مشابهة لنفهم تماما. لتعليم ضيف، كل من سجلات المصدر والوجهة / يتم ترميز العناوين في 5223 التعليمات.

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