الجمع بين البادئات في SSE
سؤال
في البادئات 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 كتيبات.