lhu
يغطي lyszt.net lhu وتعليمات RISC-V الأخرى بمزيد من التفصيل.
تنسيق الترميز
الوصف
يقرأ lhu نصف كلمة (16 بت، أو بايتين) من الذاكرة ويعاملها كقيمة غير موقّعة. وهو يقترن بـ lh، ويختلفان في كيفية ملء النصف العلوي من سجل الوجهة. كلاهما يقرأ 16 بت بنفس العنونة. تُغطّى أنصاف الكلمات وصيغة العنونة في صفحة lh. صيغة lhu موضّحة أدناه.
lhu rd, offset(rs1)
يحتوي السجل على 32 بت، لذا يجب أن يملأ التحميل ذو 16 بت أعلى 16 بت. ينسخ lh بت الإشارة عبرها، مما يُبقي الأعداد السالبة سالبة. يملؤها lhu بالأصفار، ويُسمى ذلك التوسيع الصفري، لذا تكون النتيجة دائمًا غير سالبة، من 0 إلى 65535. يشير الحرف u في الاسم إلى القراءة غير الموقّعة.
البيانات هي التي تحدد أيّهما تستخدم. اختر lh للقيم التي قد تكون سالبة وlhu للقيم التي لا تكون سالبة أبدًا. نمط البتات 0xFFFF عند تحميله بـ lhu يساوي 65535، والبتات نفسها عند تحميلها بـ lh تساوي -1.
يعرّف دليل RISC-V الأمر lhu بأنه تحميل قيمة 16 بت من الذاكرة وتوسيعها صفريًا إلى 32 بت قبل تخزينها في rd. العنوان الفعّال هو السجل rs1 مضافًا إليه الإزاحة ذات 12 بت الموسّعة إشاريًا.
معظم البيانات ذات 16 بت غير موقّعة. رموز المحارف في بعض ترميزات النصوص، وأرقام المنافذ والمجاميع الاختبارية في بيانات الشبكات، وصيغ البكسل ذات 16 بت، وحقول الأطوال في صيغ الملفات أمثلة على ذلك. سيعطي التوسيع الإشاري قيمة خاطئة لأي منها بمجرد ضبط البت الأعلى، لذا فإن lhu هو التحميل الصحيح. تقع أنصاف الكلمات على مسافة بايتين، لذا تُحرّك الحلقات التي تمر عليها العنوان بمقدار 2.
مثال
.data val: .half 0xffff .text la t0, val lhu t1, 0(t0) # t1 = 65535 (zero-extended)
