mulh
يغطي lyszt.net mulh وتعليمات RISC-V الأخرى بمزيد من التفصيل.
تنسيق الترميز
الوصف
تُرجع mulh البتات الـ 32 العليا من حاصل الضرب. يمكن أن ينتج عن ضرب عددين بطول 32 بت نتيجة بعرض يصل إلى 64 بت، بينما يحمل السجل 32 بت فقط. تحتفظ تعليمة mul بالبتات الـ 32 الدنيا وتتجاهل الباقي. أما mulh (multiply high) فتحتفظ بالبتات الـ 32 العليا.
شغّل التعليمتين على المدخلات نفسها فتحصل على حاصل الضرب كاملًا. تكتب mulh النصف الأعلى في سجل، وتكتب mul النصف الأدنى في سجل آخر، ويحمل الزوج النتيجة الكاملة بطول 64 بت.
يشير النصف الأعلى إلى الفائض، أي حاصل ضرب أكبر من أن يتسع في 32 بت. وجود قيمة ذات معنى في النصف الأعلى يعني أن حاصل الضرب لا يتسع في سجل واحد. تعتمد العمليات الحسابية على الأعداد الكبيرة جدًا والتشفير على كلا النصفين.
يعرّف دليل RISC-V متغيرين آخرين إلى جانب mulh. تضرب mulhu عددين غير مُوقّعين، وتضرب mulhsu عددًا مُوقّعًا في rs1 بعدد غير مُوقّع في rs2. وفقًا للدليل، تظهر mulhsu في الضرب المُوقّع متعدد الكلمات، حيث تُضرب الكلمة الأكثر أهمية لأحد العددين، التي تحمل بت الإشارة، بالكلمات الأقل أهمية للعدد الآخر، وهي غير مُوقّعة.
يرمز الحرف h إلى high. تعامل هذه النسخة معاملاتها كأعداد مُوقّعة، لذا يمكن أن تكون سالبة. تحدد مواصفة RISC-V أيضًا متغيرات غير مُوقّعة، وتوفر هذه المحاكية mulh المُوقّعة. وكما هو الحال مع جميع تعليمات الضرب والقسمة، لا يوجد شكل ثابت، لذا يأتي كلا المدخلين من السجلات.
مثال
li t0, 100000 li t1, 100000 mulh t2, t0, t1 # t2 = 2 (high bits of 100000 * 100000)
