laزائف

la

زائف
تجميع RISC-V مرجع

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

الوصف

يقوم la بتحميل عنوان شيء ما إلى سجل. ذلك العنوان هو موقع في الذاكرة، والقيمة المخزنة في ذلك الموقع شيء منفصل. يرمز الاسم إلى load address (تحميل العنوان).

عندما تحجز بيانات في الذاكرة، فإنك تمنحها اسمًا مثل arr أو msg، مما يعفيك من تتبع أرقام العناوين الخام. ذلك الاسم هو تسمية (label)، بديل مقروء لعنوان ذاكرة. يحمّل السطر التالي العنوان الذي تشير إليه التسمية arr إلى t0. وهو يوفّر الموقع الذي تبدأ عنده المصفوفة ولا يقرأ محتويات المصفوفة.

la t0, arr

تأخذ تعليمات التحميل والتخزين (lw وsw وما تبقى) عنوانًا موجودًا في سجل. قبل أن تتمكن من قراءة أو كتابة بيانات مسمّاة، يجب أن يكون عنوانها في سجل، ويضعه la هناك. تتطلب قراءة القيمة تعليمتين. يجد la مكان البيانات، ويقرأ lw ما يوجد هناك.

يصف دليل RISC-V تعليمة auipc بأنها التعليمة الخاصة ببناء عناوين نسبية بالنسبة إلى pc. ويذكر أن auipc متبوعة بتحميل أو تخزين بإزاحة 12 بت يمكن أن تصل إلى أي عنوان بيانات نسبي بالنسبة إلى pc بطول 32 بت.

يختلف العنوان عن محتوياته بالطريقة نفسها التي يختلف بها المؤشر عن القيمة. بعد أن يصبح العنوان في سجل، تصل إلى العناصر الفردية بإضافة إزاحات إليه. يحمّل المثال عنوان قطعة نصية إلى a0، وهو ما تتطلبه خدمة print-string. يجب إخبارها بمكان النص، وهي تقرأ النص من هناك. la هي تعليمة زائفة يبنيها المجمّع من تعليمتين حقيقيتين أو نحو ذلك.

يوسّع إلى

auipc rd, hi(label)
addi  rd, rd, lo(label)

يستبدل المُجمِّع هذه التعليمة الزائفة بالتعليمة الحقيقية أو التعليمات المذكورة أعلاه.

مثال

.data
msg: .string "hi"
.text
la a0, msg     # a0 = address of msg