lbu

lbu

تجميع RISC-V مرجع

يغطي lyszt.net lbu وتعليمات RISC-V الأخرى بمزيد من التفصيل.

تنسيق الترميز

R
31–25funct7
24–20rs2
19–15rs1
14–12funct3
11–7rd
6–0opcode
I
31–20imm[11:0]
19–15rs1
14–12funct3
11–7rd
6–0opcode
S
31–25imm[11:5]
24–20rs2
19–15rs1
14–12funct3
11–7imm[4:0]
6–0opcode
B
31–25imm[12,10:5]
24–20rs2
19–15rs1
14–12funct3
11–7imm[4:1,11]
6–0opcode
U
31–12imm[31:12]
11–7rd
6–0opcode
J
31–12imm[20,10:1,11,19:12]
11–7rd
6–0opcode

الوصف

يقرأ 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)