lw

lw

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

يغطي lyszt.net lw وتعليمات 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

الوصف

lw ينسخ قيمة من الذاكرة إلى سجل. تشكل السجلات الـ 32 منطقة العمل الصغيرة والسريعة للمعالج. تقع الذاكرة بجانبها كمخزن كبير: صف طويل من الخانات المرقمة يحمل المصفوفات والنصوص والمتغيرات. رقم الخانة هو عنوانها. تتم الحسابات في السجلات، وتنتظر البيانات في الذاكرة بين الاستخدامات.

لا يجري RISC-V العمليات الحسابية إلا على السجلات، وليس مباشرة على الذاكرة، لذا يجب تحميل القيمة في سجل قبل الاستخدام وتخزينها مرة أخرى بعد ذلك. ينفذ lw التحميل. يعني الاسم load word، والكلمة قيمة 32 بت، أي عرض سجل واحد.

يظهر شكل lw أدناه. يأخذ القيمة في rs1، وهو سجل يحمل عنوان ذاكرة يسمى الأساس، ويضيف offset، وهو ثابت صغير، ويقرأ القيمة عند العنوان الناتج في سجل الوجهة rd.

lw rd, offset(rs1)

يحمل السطر التالي القيمة 8 بايت بعد العنوان في t0.

lw t1, 8(t0)

يسمي دليل RISC-V معمارية RISC-V بمعمارية التحميل-التخزين: تعليمات التحميل والتخزين هي الوحيدة التي تصل إلى الذاكرة، وتعمل التعليمات الحسابية على السجلات وحدها. فضاء العناوين 32 بت ومعنون بالبايت، والعنوان الفعال للتحميل هو السجل rs1 زائد الإزاحة ذات 12 بت الموسعة بالإشارة. تحدد بيئة التنفيذ، أي النظام الذي يعمل فيه البرنامج، ما إذا كانت الذاكرة تحمل البايت الأقل أهمية أولاً، ويسمى little-endian، أو البايت الأكثر أهمية أولاً، ويسمى big-endian. يكون الوصول محاذى طبيعياً عندما يقبل عنوانه القسمة بالتساوي على حجم الوصول، وهو 4 بايت للكلمة. لا يثير الوصول المحاذى طبيعياً خطأ محاذاة. يتصرف الوصول غير المحاذى كما تحدد البيئة ويمكن أن يعمل ببطء شديد.

توجد الإزاحة لأن العناصر في الذاكرة تقع على مسافات منتظمة. الكلمة 4 بايت، لذا تقع العناصر المتتالية للمصفوفة على بعد 4 بايت، عند الإزاحات 0 و4 و8 وهكذا. يضع la عنوان بداية المصفوفة في سجل، ويؤدي تغيير الإزاحة إلى قراءة العناصر المختلفة. يحمل المثال قيمتين متجاورتين من مصفوفة. تعطي الإزاحة 0 القيمة الأولى، 10، وتعطي الإزاحة 4 القيمة التالية، 20.

مثال

.data
arr: .word 10, 20
.text
la t0, arr
lw t1, 0(t0)   # t1 = 10
lw t2, 4(t0)   # t2 = 20