Індексний регістр — регістр процесора, у якому вказується адреса операнда під час виконання програми. Можуть використовуватися при операціях над векторами або масивами.
Вміст індексного регістра додається (а у деяких випадках віднімається) до адреси, закодованої у самій інструкції. Таким чином отримується так звана ефективна адреса даних. Як правило процесор містить спеціальні команди для перевірки індексних регістрів, а за результатами перевірки здійснюються які-небудь дії (наприклад, збільшення чи зменшення значення індексного регістра, перехід за умовою тощо). У деяких процесорних архітектурах присутні додаткові індексні регістри; у цьому випадку їх вибір здійснюється додатковими бітовими полями у кодуванні інструкції. Якщо процесор має команди, де присутні два і більше індексних регістри, зазвичай[] їх вміст складається, проте деякі комп'ютери IBM замість складання виконували (операцію OR) над індексними регістрами.
У ранніх комп'ютерах, що не мали ніяких форм непрямої адресації, операції на масивах даних вимагали написання коду, що модифікує сам себе. Таке програмування, що змінювало поля адрес у машинних інструкціях, було досить незручним, і крім того, вимагало додаткової пам'яті, яка у часи перших комп'ютерів була вкрай обмежена.:77
Реалізації у деяких процесорах
Мала електронна обчислювальна машина
Унікальна команда складання команд малої електронної обчислювальної машини (1950 р.) додавала число до команди та цим забезпечувалась динамічна модифікація програми. Комірки пам'яті, в якій зберігалося ці числа, виконували роль індексних регістрів, що дозволяло при циклуванні звертатися до даних (елементів масивів) у послідовно розміщених комірках пам'яті.
Окрім цього в цих комірках можна будо визначати числові значення, які відповідали довільним адресам оперативної пам'яті. Це дозволило перед виконанням команди визначати адресу за якими знаходяться потрібні значення або адресу підпрограми, яку слід викликати. Це надало можливість використати опосередковану адресацію 2-ого рангу (вказівники) до даних та до підпрограм.
IBM 7094
Дана машина мала 36-бітний формат машинної інструкції, з яких 15 розрядів відводилося на адресу, а три спеціальних розряди називалися «теґ» (англ. tag), і слугували саме для вибору одного з семи індексних регістрів. Значення індексного регістра віднімалося від адреси, і отримана адреса ставала «ефективною адресою» операнда.
Z80
Мікропроцесор Zilog Z80, на відміну від Intel 8080, має два 16-розрядні індексні регістри IX і IY, що вибираються спеціальними префіксами до коду операції (DD і FD відповідно). Адресація за індексним регістром може здійснюватися з 8-розрядним зміщенням (англ. displacement) або без нього. Наприклад: LD B,(IX+9)
, або LD (IY),C
.
Недокументованою є можливість застосування даних префіксів коду операції (DD і FD) також для однобайтних регістрів — «половинок» IX і IY (за аналогією з регістрами H і L, що утворюють 16-розрядну пару HL).
Intel 8086
У процесорах Intel 8086 і сумісних присутні індексні регістри SI і DI. У випадку так званої «базово-індексної адресації» до індексного регістра може додаватися також значення регістра BX. Приклади: mov ax,[bx+si]
; mov [bx+di+9],dl
Джерела
- IBM 709 Reference Manual, Form A22-6501-0, 1958, p. 12
- (PDF). Fifth Edition (англ.). IBM. 21 жовтня 1966. A22-6703-4. Архів оригіналу (PDF) за 26 вересня 2019. Процитовано 9 грудня 2019.
- (PDF) (англ.). 1960. A24-1403-4. Архів оригіналу (PDF) за 9 грудня 2019. Процитовано 9 грудня 2019.
- Лебедев, С.А.; Дашевський, Л.Н.; Шкабара, Е.А. (1952). (рос.). Москва: Академия наук СССР. с. 162. Архів оригіналу за 23 липня 2021. Процитовано 23 липня 2021.
- (англ.). Архів оригіналу за 25 грудня 2019. Процитовано 10 грудня 2019.
- Bot, Jacco J. T. . Home of the Z80 CPU (англ.). Архів оригіналу за 15 грудня 2019. Процитовано 10 грудня 2019.
If an opcode works with the registers HL, H or L then if that opcode is preceded by #DD (or #FD) it works on IX, IXH or IXL (or IY, IYH, IYL), with some exceptions. The exceptions are instructions like LD H,IXH and LD L,IYH.
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Indeksnij registr registr procesora u yakomu vkazuyetsya adresa operanda pid chas vikonannya programi Mozhut vikoristovuvatisya pri operaciyah nad vektorami abo masivami Neonovi indikatori indeksnih registriv komp yutera IBM 7094 pochatok 1960 h rokiv Vmist indeksnogo registra dodayetsya a u deyakih vipadkah vidnimayetsya do adresi zakodovanoyi u samij instrukciyi Takim chinom otrimuyetsya tak zvana efektivna adresa danih Yak pravilo procesor mistit specialni komandi dlya perevirki indeksnih registriv a za rezultatami perevirki zdijsnyuyutsya yaki nebud diyi napriklad zbilshennya chi zmenshennya znachennya indeksnogo registra perehid za umovoyu tosho U deyakih procesornih arhitekturah prisutni dodatkovi indeksni registri u comu vipadku yih vibir zdijsnyuyetsya dodatkovimi bitovimi polyami u koduvanni instrukciyi Yaksho procesor maye komandi de prisutni dva i bilshe indeksnih registri zazvichaj de yih vmist skladayetsya prote deyaki komp yuteri IBM zamist skladannya vikonuvali operaciyu OR nad indeksnimi registrami U rannih komp yuterah sho ne mali niyakih form nepryamoyi adresaciyi operaciyi na masivah danih vimagali napisannya kodu sho modifikuye sam sebe Take programuvannya sho zminyuvalo polya adres u mashinnih instrukciyah bulo dosit nezruchnim i krim togo vimagalo dodatkovoyi pam yati yaka u chasi pershih komp yuteriv bula vkraj obmezhena 77Realizaciyi u deyakih procesorahMala elektronna obchislyuvalna mashina Unikalna komanda skladannya komand maloyi elektronnoyi obchislyuvalnoyi mashini 1950 r dodavala chislo do komandi ta cim zabezpechuvalas dinamichna modifikaciya programi Komirki pam yati v yakij zberigalosya ci chisla vikonuvali rol indeksnih registriv sho dozvolyalo pri cikluvanni zvertatisya do danih elementiv masiviv u poslidovno rozmishenih komirkah pam yati Okrim cogo v cih komirkah mozhna budo viznachati chislovi znachennya yaki vidpovidali dovilnim adresam operativnoyi pam yati Ce dozvolilo pered vikonannyam komandi viznachati adresu za yakimi znahodyatsya potribni znachennya abo adresu pidprogrami yaku slid viklikati Ce nadalo mozhlivist vikoristati oposeredkovanu adresaciyu 2 ogo rangu vkazivniki do danih ta do pidprogram IBM 7094 Dana mashina mala 36 bitnij format mashinnoyi instrukciyi z yakih 15 rozryadiv vidvodilosya na adresu a tri specialnih rozryadi nazivalisya teg angl tag i sluguvali same dlya viboru odnogo z semi indeksnih registriv Znachennya indeksnogo registra vidnimalosya vid adresi i otrimana adresa stavala efektivnoyu adresoyu operanda Z80 Mikroprocesor Zilog Z80 na vidminu vid Intel 8080 maye dva 16 rozryadni indeksni registri IX i IY sho vibirayutsya specialnimi prefiksami do kodu operaciyi DD i FD vidpovidno Adresaciya za indeksnim registrom mozhe zdijsnyuvatisya z 8 rozryadnim zmishennyam angl displacement abo bez nogo Napriklad LD B IX 9 abo LD IY C Nedokumentovanoyu ye mozhlivist zastosuvannya danih prefiksiv kodu operaciyi DD i FD takozh dlya odnobajtnih registriv polovinok IX i IY za analogiyeyu z registrami H i L sho utvoryuyut 16 rozryadnu paru HL Intel 8086 U procesorah Intel 8086 i sumisnih prisutni indeksni registri SI i DI U vipadku tak zvanoyi bazovo indeksnoyi adresaciyi do indeksnogo registra mozhe dodavatisya takozh znachennya registra BX Prikladi mov ax bx si mov bx di 9 dlDzherelaIBM 709 Reference Manual Form A22 6501 0 1958 p 12 PDF Fifth Edition angl IBM 21 zhovtnya 1966 A22 6703 4 Arhiv originalu PDF za 26 veresnya 2019 Procitovano 9 grudnya 2019 PDF angl 1960 A24 1403 4 Arhiv originalu PDF za 9 grudnya 2019 Procitovano 9 grudnya 2019 Lebedev S A Dashevskij L N Shkabara E A 1952 ros Moskva Akademiya nauk SSSR s 162 Arhiv originalu za 23 lipnya 2021 Procitovano 23 lipnya 2021 angl Arhiv originalu za 25 grudnya 2019 Procitovano 10 grudnya 2019 Bot Jacco J T Home of the Z80 CPU angl Arhiv originalu za 15 grudnya 2019 Procitovano 10 grudnya 2019 If an opcode works with the registers HL H or L then if that opcode is preceded by DD or FD it works on IX IXH or IXL or IY IYH IYL with some exceptions The exceptions are instructions like LD H IXH and LD L IYH