lbu
يغطي lyszt.net lbu وتعليمات RISC-V الأخرى بمزيد من التفصيل.
تنسيق الترميز
الوصف
يقرأ lbu بايتًا واحدًا (8 بتات) من الذاكرة كقيمة غير موقعة. وهو يقترن بـ lb، ولا يختلفان إلا في كيفية ملء بقية السجل. كلاهما يقرأ بايتًا واحدًا باستخدام نفس العنونة. تغطي صفحة lb البايتات وصيغة العنونة. تظهر صيغة lbu أدناه.
lbu rd, offset(rs1)
يحتوي السجل على 32 بت، لذا يترك تحميل بايت واحد 24 بت لملئها. ينسخ lb البت الأعلى من البايت إلى تلك البتات، وهذا هو امتداد الإشارة ويمكن أن ينتج رقمًا سالبًا. يملؤها lbu بالأصفار، لذا تقع النتيجة دائمًا بين 0 و255. يرمز الحرف u إلى القراءة غير الموقعة.
تستخدم تحميلات النص عادةً lbu. رموز الأحرف غير موقعة، وكثير منها تكون بتته العليا مضبوطة، بما في ذلك الحروف المشكولة ورموز متنوعة. يجعلها lb الممتد للإشارة سالبة ويكسر المقارنات. تستخدم حلقة النص القياسية lbu. فهي تحمّل بايتًا، وتتحقق مما إذا كان صفرًا، وهو ما يشير إلى نهاية النص، وتعالجه وتضيف 1 إلى العنوان.
يعرّف دليل RISC-V كلاً من lb وlbu كإصدارين 8-بت من تحميلات نصف الكلمة، بنفس العنوان الفعال للسجل rs1 مضافًا إليه الإزاحة 12-بت الممتدة للإشارة. الذاكرة معنونة بالبايت، لذا يسمي كل عنوان بايتًا واحدًا.
يناسب lbu أيضًا بيانات البايت الأخرى، بما في ذلك قنوات الألوان في الصور ومخازن البيانات الخام وبايتات التعليمات في المفسّر. البايتات المحمّلة بهذه الطريقة ليس لها إشارة للتعامل معها، لذا تتحد مباشرة مع الإزاحات وعمليات OR عند إعادة بناء قيمة أكبر من بايتات مفردة. استخدم lb فقط عندما تكون بيانات 8-بت موقعة.
مثال
.data val: .byte 0xff .text la t0, val lbu t1, 0(t0) # t1 = 255 (zero-extended)
