У попередніх процесорах не всі регістри були рівними:
- На мікросхемах не було достатньо місця, щоб мати одиницю додавання для кожного реєстру.
- З 8 бітів не було достатньо доступних опкодів для всіх можливих комбінацій джерела та призначення.
Таким чином, припускаючи, що один конкретний реєстр завжди мав на увазі, коли був включений суматор, зробив мікросхема менш складною і опкоди коротшими.
Наприклад, 6510 (використовується в Commodore 64) можна додавати лише за допомогою регістра A, а індексація, що використовується або X, або Y. Існують інструкції INC X та INC Y, але немає INC A.
Оскільки регістри мали різні звичаї, мнемоніка була обрана відповідно до їх використання. Наприклад, A, X і Y в 6510 (замість A, B і C).
Назви в 8086 році вибрані так, щоб відображати їх використання. Маючи 4 регістри загального призначення, було логічно назвати їх AX, BX, CX і DX. Додаткові регістри індексації називали BP та SP (мнемонічні: Base Pointer, Stack Pointer).
Оскільки багато опкодів було розширено до 16 біт, було певне місце, щоб вказати, який із чотирьох регістрів використовувався. Однак деякі історичні причини все ж застосовуються, оскільки CX був дещо особливим: REP і подібні, які є 8-бітовими опкодами, завжди використовують CX як лічильник. Простий мнемонічний, CX = лічильник, допомагає запам'ятати, який з них використовується.
Опкоди для наступників 8086 повинні були бути сумісними назад і є безладом у результаті опкодів змінної довжини. Коли 32-бітні шини стали більш поширеними, спробували процесори з фіксованою довжиною коду. Це спрощує частину декодування процесора, яка звільнила простір, який може бути використаний, наприклад, для більшої кількості регістрів.
Процесори, які дотримувались цієї думки, називаються процесорами RISC (Reduced Instruction Set CPU), на відміну від CISC (Complex Instruction Set CPU).
Більше регістрів призводить до меншої кількості переливів на пам'ять. В основному регістри - це найшвидший доступний кеш, тому збільшення кількості регістрів є хорошою ідеєю навіть в наш час. Відсутність спеціалізованих інструкцій (сподіваємось, що більше) компенсувалася швидшим введенням простих інструкцій.
32-бітові опкоди з фіксованою довжиною мають достатньо місця для включення джерела, другого джерела, операції та призначення. SPARC вдалося усунути 5 біт для кожного джерела, другого джерела та місця призначення, і для цього було видно 32 регістри одночасно.
32 регістри - це занадто багато, щоб використовувати букви, і все одно вони були рівними, тому нумерація їх була очевидним вибором. 'R' було використано для відрізнення їх від констант 0..31, а 'R' було простою мнемонікою для Реєстру. Тому: R0..R31.
Протягом багатьох років Pentium та його спадкоємці підтримували зворотну сумісність. Однак також було включено багато більш успішних ідей RISC. Часто ці нові, схожі на RISC інструкції працюватимуть швидше, ніж назад сумісні версії.
Intel також збільшила кількість реєстрів, щоб зменшити кількість доступу до пам'яті.
І, мабуть, Intel нарешті почала використовувати R-позначення. Зворотна сумісність забезпечить збереження AX, BX, ..., але я б сказав, що AX - це лише синонім, наприклад, R0.
Відмова : Наведене вище мій погляд на історію. Це буде неповно, оскільки я не був навколо, щоб побачити перші частини історії з перших рук. Тим не менш, я сподіваюся, що комусь це буде корисно.