Dasturlash

x86-64 protsessoridagi registrlar soni va turlari: Batafsil tahlil

6-mart, 2026, 08:1121 ko'rish3 daqiqa o'qish
x86-64 protsessoridagi registrlar soni va turlari: Batafsil tahlil

2020‑yilda Apple‑ning M1 chipi va Rosetta 2 texnologiyasi tufayli x86‑64 arxitekturasi yana dasturchilar orasida katta eʼtibor qozondi. Ushbu maqolada x86‑64 protsessorida mavjud bo‘lgan registrlarning umumiy soni, ularning turlari va har bir guruhning vazifalari haqida batafsil maʼlumot beramiz.

1. Umumiy maqsadli registrlar (GPR)

x86‑64 ning asosiy registrlari – 16 ta 64‑bitli umumiy maqsadli registr (RAX, RBX, RCX, …, R15). Har biri 8‑bit, 16‑bit va 32‑bit kichik registrlarga (AL, AX, EAX kabi) bo‘linadi. Bu kichik registrlar alohida kodlashga ega bo‘lgani uchun ularni alohida registr sifatida hisoblaymiz. Natijada 16 ta asosiy + 52 ta sub‑registr = 68 ta registr hosil bo‘ladi.

2. Maxsus registrlar: RIP va RFLAGS

Instruction pointer (RIP) va status registri (RFLAGS) ham x86‑64 da muhim ro‘l o‘ynaydi. Ularning 32‑bit (EIP, EFLAGS) va 16‑bit (IP, FLAGS) variantlari mavjud, lekin kodlash bir xil bo‘lgani sababli ularni alohida hisoblamaymiz. Bu guruhda 4 ta registr mavjud.

3. Segment registrlari

CS, DS, ES, FS, GS, SS – jami 6 ta segment registri. Long mode’da FS va GS bazalari alohida MSR (FSBASE, GSBASE) orqali boshqariladi, qolganlari esa 0 bazali tekis manzil maydoniga ega.

4. SIMD va floating‑point registrlari

Bu guruhda bir necha avloddagi ko‘p maqsadli (SIMD) va suzuvchi nuqtali (floating‑point) registrlar jamlangan:

  • x87 – 8 ta 80‑bitli ST0‑ST7 registri + nazorat va status registrlari (FPSW, FPCW, FPTW, IP, OPCODE) – jami 14 ta.
  • MMX – 8 ta 64‑bitli MM0‑MM7 registri (x87 mantissa qismlari).
  • SSE/AVX – XMM0‑XMM15 (128‑bit), YMM0‑YMM15 (256‑bit) va ZMM0‑ZMM31 (512‑bit) registrlari. AVX‑512 k maskalari (k0‑k7) ham shu guruhga kiradi. Bu yerda 33 ta registr hisoblanadi.

5. MPX va xavfsizlik registrlari

Intel‑ning MPX (Memory Protection Extensions) texnologiyasi 4 ta BND0‑BND3 registri, shuningdek BNDCFG, BNDCFU va BNDSTATUS registrlarini kiritadi – jami 7 ta registr.

6. Debug (tuzatish) registrlari

DR0‑DR3 – breakpoint manzillarini saqlovchi, DR6 – status, DR7 – nazorat registrlari. Bu guruhda 6 ta registr mavjud.

7. Nazorat (control) registrlari

CR0‑CR15 (umumiy 16 ta) ichida amalda 6 ta asosiy nazorat registri (CR0, CR2, CR3, CR4, CR8) va XSAVE bilan kiritilgan XCR0 kabi kengaytirilgan registrlar bor. Ushbu bo‘limda 6 ta registr hisoblanadi.

8. Tizim descriptor registrlari

GDTR, LDTR, IDTR va TR – har biri 80‑bitli bo‘lib, jadval hajmi va bazaviy manzilni saqlaydi. Bu guruhda 4 ta registr.

9. Model‑spesifik registrlar (MSR)

MSR‑lar 64‑bitli, lekin ko‘pincha arxitektura darajasida 400 ta “architectural” MSR mavjud. Ular CPU holatini, vaqtni, bazalarni (FSBASE, GSBASE) va boshqa ko‘plab parametrlarni boshqaradi. Bu yerda 400 ta registrni sanash mumkin.

Umumiy natija

Yuqoridagi barcha guruhlarni qo‘shganimizda, zamonaviy x86‑64 protsessorida taxminan 557 ta registr (sub‑registrlar, SIMD, MSR va boshqalar) mavjud bo‘ladi. Bu son boshqa ko‘p zamonaviy ISA‑larga nisbatan ancha ko‘p bo‘lib, x86‑64 ning murakkabligini ko‘rsatadi.

Ushbu ko‘p registrli arxitektura dasturchilarga keng imkoniyatlar beradi, lekin samarali kod yozish uchun har bir registrning vazifasini va kodlashini chuqur tushunish zarur.

Manba: Hacker News
#x86-64 #CPU registrlari #registerlar soni #Intel #AMD
Telegram da muhokama qilish