Bosh sahifa Wiki Instruction

Instruction

Instruction — protsessor bajarishi uchun instruction set architecture tomonidan belgilangan kodlangan buyruqdir. U arifmetik amal, ma’lumot ko‘chirish, taqqoslash, boshqaruv oqimini o‘zgartirish yoki tizim funksiyasini chaqirishni ifodalashi mumkin. Mashina ko‘rsatmasi bitlar ketma-ketligi sifatida xotirada saqlanadi va protsessor tomonidan decode qilinadi.

Kodlash tarkibi

Instruction odatda opcode va operandlarni ifodalovchi maydonlardan tuziladi. Opcode amal turini, qolgan bitlar registr, immediate qiymat, addressing mode yoki xotira siljishini ko‘rsatadi. Fixed-length instruction decode’ni soddalashtiradi; variable-length format esa kod zichligini oshirishi mumkin.

Assembly tili mashina kodiga inson o‘qiy oladigan mnemonic beradi. Masalan, add nomi qo‘shish amalini bildiradi, lekin aniq sintaksis va operand tartibi assembler hamda arxitekturaga bog‘liq. Assembler label manzillarini hisoblab, instruktsiyalarni binary kodga aylantiradi.

Instruction sinflari

Data movement ko‘rsatmalari registr va xotira orasida qiymat ko‘chiradi. Arithmetic va logical ko‘rsatmalar qo‘shish, ayirish, siljitish, AND yoki XORni bajaradi. Branch, jump, call va return program counterga ta’sir qiladi. SIMD yoki vector ko‘rsatmalar bir amalni bir nechta elementga parallel qo‘llaydi.

Privileged instruction sahifa jadvali, interrupt holati yoki qurilma boshqaruvi kabi himoyalangan resursga ta’sir qiladi va faqat tegishli privilege darajasida bajariladi. User mode dasturi bunday xizmatni system call orqali operatsion tizimdan so‘raydi. Noto‘g‘ri yoki ruxsatsiz opcode exception keltirib chiqaradi.

Bajarilish jarayoni

Protsessor instructionni fetch qiladi, decode qilib ichki boshqaruv signallari yoki mikroamallarga ajratadi, operandlarni oladi va kerakli execution unitda bajaradi. Natija registrga yoki xotiraga yoziladi. Pipeline bir nechta instructionni turli bosqichlarda bir vaqtda ushlab turadi.

Murakkab instruction mikrocode yordamida ichki sodda amallar ketma-ketligiga aylanishi mumkin. Boshqa ko‘rsatmalar bir yoki bir necha cycle’da to‘g‘ridan-to‘g‘ri bajariladi. Latency natija tayyor bo‘lish vaqtini, throughput esa ma’lum davrda nechta shunday amal boshlanishi mumkinligini bildiradi.

ISA va mikroarxitektura

ISA dasturiy ta’minot ko‘radigan instructionlar, registrlar, exceptionlar va memory modelni belgilaydi. Mikroarxitektura shu shartnomani pipeline, cache, predictor va execution unitlar yordamida amalga oshiradi. Bir ISAga mos ikki protsessor ichkarida keskin farq qilishi mumkin, lekin bir xil qonuniy binaryni bajara oladi.

Instruction mavjudligi protsessor extensioniga bog‘liq bo‘lishi mumkin. Dastur ishga tushishda feature detection qilib, mos kod yo‘lini tanlaydi. Aks holda eski protsessorda illegal instruction xatosi yuz beradi. Compiler target va optimization flaglari qaysi extensionlardan foydalanishni belgilaydi.

Tahlil va xavfsizlik

Disassembler binary baytlarini instructionlarga ajratadi, debugger esa program counter atrofidagi kodni ko‘rsatadi. Variable-length arxitekturada noto‘g‘ri boshlanish nuqtasi boshqa instruction oqimini berishi mumkin. Control-flow integrity qonuniy branch targetlarni cheklab, hujumchining mavjud instruction bo‘laklarini ulashini qiyinlashtiradi.

Alignment va byte order

Ba’zi arxitekturalar instruction manzilining ikki yoki to‘rt baytga tekislangan bo‘lishini talab qiladi; noto‘g‘ri alignment exception keltiradi. O‘zgaruvchan uzunlikli kodda alignment qat’iy bo‘lmasa ham cache line va decode boundary unumdorlikka ta’sir qiladi. Binary fayldagi byte order ko‘p baytli maydon qanday joylashishini belgilaydi. Instruction byte’larini data endianness bilan bir xil deb taxmin qilish har doim to‘g‘ri emas; spetsifikatsiya tekshiriladi. Self-modifying code yozuvdan keyin instruction cache coherence va memory barrier talablariga rioya qilishi kerak.

Bog‘liq tushunchalar

Instruction set architecture, Opcode, Assembly language, Microcode, Pipeline, System call