۲

رجیسترهای CPU: میز کار پردازنده

با حافظه‌های موقت و فوق سریع پردازنده (EAX, EBX, ...) آشنا می‌شیم.

رجیستر چیه؟

پردازنده (CPU) برای اینکه بتونه محاسبات رو با سرعت برق و باد انجام بده، نمی‌تونه منتظر بمونه تا اطلاعات از حافظه RAM بیاد. برای همین، یه سری حافظه‌های خیلی کوچیک و فوق‌العاده سریع داخل خودش داره که بهشون می‌گن رجیستر. ما در اسمبلی، بیشتر کارهامون رو با این رجیسترها انجام می‌دیم.

رجیسترهای عمومی (General Purpose)

در معماری x86 (۳۲ بیتی)، چهارتا رجیستر اصلی داریم که هر کدوم کاربرد خاص خودشون رو دارن:

  • EAX (Accumulator): رجیستر آچار فرانسه! بیشتر برای محاسبات حسابی و نگهداری مقدار بازگشتی توابع استفاده می‌شه.
  • EBX (Base): معمولاً برای نگهداری آدرس پایه یه آرایه یا ساختار داده استفاده می‌شه.
  • ECX (Counter): همونطور که از اسمش پیداست، به عنوان شمارنده در حلقه‌ها کاربرد داره.
  • EDX (Data): برای نگهداری داده‌های اضافی در عملیات ضرب و تقسیم به کار می‌ره.

در معماری ۶۴ بیتی، این رجیسترها به نسخه ۶۴ بیتی خودشون یعنی `RAX`, `RBX`, `RCX`, `RDX` ارتقا پیدا کردن.

section .text
    global _start

_start:
    mov eax, 10     ; مقدار ۱۰ رو در EAX بریز
    mov ebx, 20     ; مقدار ۲۰ رو در EBX بریز
    
    add eax, ebx    ; eax = eax + ebx  (eax حالا ۳۰ است)
    sub ebx, 5      ; ebx = ebx - 5   (ebx حالا ۱۵ است)

    ; ... بقیه برنامه