Bosh sahifa Wiki Pseudo Instruction

Pseudo Instruction

Pseudo Instructionassembler tilida haqiqiy mashina buyrug‘iga o‘xshab yoziladigan, ammo protsessor ISA’sida mustaqil opcode sifatida mavjud bo‘lmasligi mumkin bo‘lgan qulay ifoda. Assembler uni bitta haqiqiy buyruq, operandlari boshqacha buyruq yoki bir nechta mashina buyrug‘i ketma-ketligiga aylantiradi.

Assemblerdagi vazifa

Pseudo instruction tez-tez ishlatiladigan niyatni aniq ifodalaydi. Registrni nusxalash, katta konstantani yuklash, nol bilan taqqoslash yoki uzoq manzilga o‘tish uchun mnemonikalar shular jumlasidan. Dasturchi bit maydonlari va vaqtinchalik ketma-ketlikni qo‘lda tanlamaydi; assembler nishon, immediate diapazoni va faollashtirilgan kengaytmaga mos shaklni yaratadi.

Mavhum misolda:

LI r1, 0x12345678

LI alohida opcode bo‘lmasligi mumkin. Qiymat kichik bo‘lsa bitta immediate buyruq, katta bo‘lsa yuqori va past qismlarni yig‘adigan ikki yoki undan ortiq buyruq hosil bo‘ladi. Natijaviy uzunlik operandga bog‘liq bo‘lishi mumkin.

Bir buyruqli alias

Ayrim pseudo instruction mavjud buyruqning kanonik aliasidir. Masalan, bitta registrni ikkinchisiga ko‘chirish nol bilan qo‘shish yoki OR orqali kodlanishi mumkin. Disassembler xom opcode nomini yoki o‘qilishi qulay aliasni ko‘rsatish siyosatini tanlaydi. Ikkala yozuv bir xil baytlarni ifodalasa, bajarilish semantikasi teng.

Bu macro bilan bir xil tushuncha emas. Macro parametrli matn almashtirish, label va murakkab assembler direktivalarini qamrab oladi. Pseudo instruction odatda assembler va ISA vositalari hujjatida belgilangan cheklangan standart kengaytmadir.

Relokatsiya va linker

Belgi manzilini yuklash kabi pseudo instruction joylashuv yakunlanmaguncha aniq kodga aylantirilmasligi mumkin. Assembler relokatsiya juftlarini chiqaradi, linker manzilni hisoblaydi va ayrim holatda ketma-ketlikni qisqartiradi. Position-independent kod global jadval yoki program-counter-relative shakldan foydalanadi.

Pseudo instruction ichida vaqtinchalik registr ishlatilsa, ABI va assembler qoidasi uni aniq belgilashi kerak. Yashirin registrni bosib yuborish dastur holatini buzadi. Shu sabab ko‘p kengaytmalar faqat ko‘rsatilgan natija registrlari bilan ishlaydigan xavfsiz ketma-ketlik tanlaydi.

Debug va tahlil

Manba darajasida bitta pseudo instruction bir nechta adresni egallashi mumkin. Debugger bir qadamda butun manba satrini yoki faqat bitta real buyruqni bajarishi sozlamaga bog‘liq. Breakpoint o‘rnatishda ketma-ketlik o‘rtasiga tushish registrda yarim qurilgan qiymat qoldirishi mumkin.

Unumdorlik tahlili pseudo nomga emas, assembler chiqargan haqiqiy buyruqlar va ularning port, latency hamda xotira ta’siriga qaraydi. Turli assembler versiyasi yoki kod modeli ayni manba yozuvini boshqa ketma-ketlikka aylantirishi mumkin.

Sintaksis va ko‘chma kod

Turli assembler bir xil ISA uchun boshqa pseudo mnemonic yoki operand tartibini ishlatishi mumkin. GNU, vendor va integratsiyalangan compiler assembler sintaksisi o‘rtasida manba bevosita ko‘chmasligi ehtimol. Haqiqiy opcode mavjud bo‘lsa ham alias nomlari farq qiladi. Portativ past darajadagi loyiha qaysi assembler dialekti va arxitektura kengaytmasini talab qilishini build sozlamasida aniq belgilaydi.

Pseudo instruction’ni privileged yoki atomic deb baholash uchun uning nomiga emas, kengaytirilgan real buyruqlarga qaraladi. Bir mnemonic ichida load va vaqtinchalik registr amali bo‘lsa, page fault yoki signal aynan shu oraliqda kelishi mumkin. Debug va exception tahlili expansion chegaralarini bilishi zarur.

Assembler listing fayli pseudo yozuv bilan hosil bo‘lgan baytlarni yonma-yon ko‘rsatadi. Code review va boot darajasidagi diagnostikada bu ro‘yxat manba niyati bilan real instruction stream o‘rtasidagi farqni aniqlashga yordam beradi.

Bog‘liq tushunchalar

assembler, macro instruction, instruction alias, relocation, machine code, immediate value