سؤال

في البادئات SSE 066h (تجاوز حجم المعامل) 0F2H (عيني) و 0F3h (REPE) جزء من Opcode.

في غير SSE 066h التبديل بين عملية 32 بت (أو 64 بت) وعملية 16 بت. 0F2h و 0F3h تستخدم لعمليات السلسلة. يمكن دمجها بحيث 066h و 0F2h (أو 0F3h) يمكن استخدامها في نفس التعليمات، لأن هذا مفيد. ما هو السلوك في تعليمات SSE؟ على سبيل المثال، لدينا (تجاهل وزارة الدفاع / RM الآن):

0f 58 --> addps

66 0f 58 --> addpd

f2 0f 58 --> addsd

f3 0f 58 --> addss

ولكن ما هذا؟

66 f2 0f 58

وماذا عن؟

f2 66 0f 58

ناهيك عن ما يلي له بادئة ممثلين متضاربة:

f2 f3 0f 58

ما هو المواصفات لهذه؟

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

المحلول

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

سيكون افتراضاتي السذاجة عموما أن البادئات الإضافية لن تكون غير مرئية ولكن ليس هناك ضمان. يبدو أنه معقول بالنظر إلى أن بعض الأدلة الأمثل توصي بايت NOP (القضائي 90h) عن طريق البادئة مع 66h, ، على سبيل المثال:

db 66h, 90h; 2-byte NOP
db 66h, 66h, 90h; 3-byte NOP
db 66h, 66h, 66h, 90h; 4-byte NOP

ومع ذلك، أنا أعرف أيضا ذلك CS و DS بادئات تجاوز القطاع تحتوي على وظائف جديدة كأفضل بادئات تلميح فرع SSE2 (فرع التنبؤ المستغرق = 3Eh = DS تجاوز؛ توقع فرع لم يؤخذ = 2Eh = CS تجاوز) عند تطبيقها على تعليمات القفز الشرطية.

على أي حال، نظرت إلى أمثلةك أعلاه، دائما XMM1 للجميع 0 و XMM7 للجميع 0FFh بواسطة

pxor xmm1, xmm1    ; xmm1 <- 0s
pcmpeqw xmm7, xmm7 ; xmm7 <- FFs 

ثم الرمز المعني، مع xmm1, xmm7 الحجج. ما لوحظته (رمز 32 بت في نظام Win64 و Intel T7300 Core 2 Duo) كان:

1) لا تغيير لوحظ ل addsd بإضافة 66h اختصار

db 66h 
addsd xmm1, xmm7 ;total sequence = 66 F2 0F 58 CF     

2) لا يوجد تغيير لوحظ addss بإضافة 0F2h اختصار

db 0f2h     
addss xmm1,xmm7 ;total sequence = F2 F3 0F 58 CF

3) ومع ذلك، لاحظت تغييرا عن طريق البادئة addpd بواسطة 0F2h:

db 0f2h    
addpd xmm1, xmm7 ;total sequence = F2 66 0F 58 CF

في هذه الحالة، كانت النتيجة في xmm1 0000000000000000FFFFFFFFFFFFFFFFh بدلا من FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFh.

وبالتالي استنتاجي هو أن المرء لا ينبغي أن يقدم أي افتراضات ويتوقع سلوك "غير محدد". وبعد ومع ذلك، لن أفاجأ، ومع ذلك، إذا تمكنت من العثور على بعض الأدلة في Agner Fog كتيبات.

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