li
زائفيغطي lyszt.net li وتعليمات RISC-V الأخرى بمزيد من التفصيل.
الوصف
يقوم li بتحميل ثابت رقمي إلى سجل. يشير الاسم إلى load immediate، و immediate هو قيمة ثابتة مكتوبة مباشرة في الكود. يقوم السطر التالي بتخزين 42 في t0.
li t0, 42
تبدأ معظم البرامج بوضع أرقام معروفة في السجلات، بما في ذلك العدادات والحدود ورموز الخدمة.
كلمة load تأتي من قيد في العتاد. تعليمة RISC-V يبلغ طولها 32 بت ويجب أن تحمل العملية والسجلات والثابت معًا. لا يمكن لتعليمة واحدة أن تحمل ثابتًا كاملًا بطول 32 بت. الثوابت الصغيرة تتسع والكبيرة لا تتسع.
يتجاوز li هذا القيد. إنه تعليمة زائفة، اسم يستبدله المجمّع بأي تعليمات حقيقية تتطلبها القيمة. القيمة الصغيرة تحتاج إلى تعليمة واحدة. القيمة الكبيرة تحتاج إلى تعليمتين، واحدة تضبط الجزء العلوي وأخرى تضيف الجزء السفلي، لذا يعمل السطر التالي مع رقم من أي حجم.
li t1, 0x10010000
يعرض المحاكي التعليمات الحقيقية التي يتوسع إليها li.
يصف دليل RISC-V تعليمة lui بأنها التعليمة المستخدمة لبناء ثوابت بطول 32 بت. وهي تضع قيمة بطول 20 بت في البتات العلوية من السجل الوجهة وتملأ أدنى 12 بت بالأصفار.
يقوم li و la بتحميل أشياء مختلفة. يحمّل li رقمًا كتبته ويحمّل la العنوان الذي يمثله التسمية. يحمّل المثال قيمة صغيرة وقيمة كبيرة، ويتعامل المجمّع مع كلتيهما بالطريقة نفسها.
يوسّع إلى
addi rd, zero, imm # small constants lui rd, hi + addi rd, rd, lo # large constants
يستبدل المُجمِّع هذه التعليمة الزائفة بالتعليمة الحقيقية أو التعليمات المذكورة أعلاه.
مثال
li t0, 42 li t1, 0x10010000
