b'\n_START_ARTICLE_\nMod de adresare\n_START_PARAGRAPH_\n\xc3\x8en arhitectura calculatoarelor, modul de adresare reprezint\xc4\x83 felul \xc3\xaen care se calculeaz\xc4\x83 adresa de memorie a unui operand \xc3\xaen momentul execu\xc8\x9biei unei instruc\xc8\x9biuni de c\xc4\x83tre procesor, folosind \xc3\xaen acest scop informa\xc8\x9bia aflat\xc4\x83 \xc3\xaen registrele procesorului sau chiar \xc3\xaen codul ma\xc8\x99in\xc4\x83 al instruc\xc8\x9biunii.\n_START_SECTION_\nAspecte generale\n_START_PARAGRAPH_\nCodul opera\xc8\x9biei reprezint\xc4\x83 doar o parte din dimensiunea total\xc4\x83 a unei instruc\xc8\x9biuni, a\xc8\x99a cum este ea reprezentat\xc4\x83 \xc3\xaen memorie. Restul spa\xc8\x9biului este folosit pentru a preciza operanzii, adic\xc4\x83 acele date necesare execu\xc8\x9biei opera\xc8\x9biei, fie c\xc4\x83 opera\xc8\x9biile se efectueaz\xc4\x83 asupra lor, fie c\xc4\x83 reprezint\xc4\x83 o valoare ce controleaz\xc4\x83 fluxul ulterior al programului (ca, de exemplu, \xc3\xaen cazul instruc\xc8\x9biunilor de salt)._NEWLINE_Multitudinea modurilor de adresare provine din necesitatea de a echilibra dorin\xc8\x9ba de a putea adresa spa\xc8\x9bii mari de memorie \xc8\x99i parametri calcula\xc8\x9bi pe parcurs, ale c\xc4\x83ror valori nu sunt cunoscute \xc3\xaen momentul scrierii programului, cu cea de a face codul s\xc4\x83 se execute \xc3\xaentr-un timp c\xc3\xa2t mai scurt._NEWLINE_Operarea procesorului se efectueaz\xc4\x83 cu o vitez\xc4\x83 controlat\xc4\x83 mai ales de ceasul procesorului (\xc3\xaen majoritatea PC-urilor moderne, acesta este de ordinul gigahertzilor), a\xc8\x99a c\xc4\x83 pentru a executa codul c\xc3\xa2t mai rapid, este de dorit ca operanzii s\xc4\x83 nu mai fie \xc3\xaenc\xc4\x83rca\xc8\x9bi din memorie, ci s\xc4\x83 fie direct accesibili procesorului, fie efectiv din codul instruc\xc8\x9biunii, fie \xc3\xaen registre, dar pentru aceasta este nevoie ca operanzii s\xc4\x83 fie cunoscu\xc8\x9bi \xc3\xaen momentul scrierii codului sau al compil\xc4\x83rii. Dac\xc4\x83 aceasta nu este posibil\xc4\x83, sau dac\xc4\x83 spa\xc8\x9biul relativ restr\xc3\xa2ns de memorare disponibil pe procesor este insuficient pentru volumul de date prelucrat de program, atunci operanzii trebuie s\xc4\x83 fie \xc3\xaenc\xc4\x83rca\xc8\x9bi din memorie._NEWLINE_Accesul la memorie este mai lent dec\xc3\xa2t accesul la spa\xc8\x9biile de stocare de pe procesor. De\xc8\x99i procesoarele pot dispune de o memorie cache aflat\xc4\x83 pe procesor, \xc8\x99i \xc3\xaen care sunt stocate c\xc3\xa2teva date accesate frecvent din memoria principal\xc4\x83, de regul\xc4\x83 este de a\xc8\x99teptat ca un acces la memorie s\xc4\x83 fie de cel pu\xc8\x9bin un ordin de m\xc4\x83rime mai lent dec\xc3\xa2t lucrul cu registrele sau dec\xc3\xa2t prelucrarea instruc\xc8\x9biunii. Limitarea vitezei accesului la memorie f\xc4\x83cut de procesor provine din magistrala FSB, care de regul\xc4\x83 are frecven\xc8\x9be de lucru de ordinul sutelor de megahertzi (de\xc8\x99i pe un ciclu de ceas FSB se pot efectua dou\xc4\x83 sau patru transferuri), dar mai ales din laten\xc8\x9ba CAS a memoriei, laten\xc8\x9b\xc4\x83 care \xc3\xaen anii 1990 \xc8\x99i 2000 nu a putut fi sc\xc4\x83zut\xc4\x83 at\xc3\xa2t de repede c\xc3\xa2t a fost crescut\xc4\x83 frecven\xc8\x9ba ceasului procesorului, r\xc4\x83m\xc3\xa2n\xc3\xa2nd de ordinul nanosecundelor._NEWLINE_Necesitatea de a adresa cantit\xc4\x83\xc8\x9bi mari de memorie face ca dimensiunea adresei de memorie s\xc4\x83 devin\xc4\x83 prea mare pentru a \xc3\xaenc\xc4\x83pea integral \xc3\xaen codul ma\xc8\x99in\xc4\x83 \xc8\x99i astfel, tehnicile de adresare devin mai complexe.\n_START_SECTION_\nAdresarea imediat\xc4\x83\n_START_PARAGRAPH_\nAdresarea imediat\xc4\x83 este cel mai simplu \xc8\x99i mai rapid mod de a transmite operandul. Operandul este transmis direct \xc3\xaen corpul instruc\xc8\x9biunii, nemaifiind necesar\xc4\x83 accesarea memoriei. Dar acest mod de adresare poate fi folosit doar \xc3\xaen cazul \xc3\xaen care valoarea operandului este cunoscut\xc4\x83 la momentul scrierii programului sau poate fi determinat la compilare. \xc3\x8en plus, valorile transmite nu pot lua valori prea mari din cauza dimensiunii limitate a spa\xc8\x9biului disponibil \xc3\xaen cadrul instruc\xc8\x9biunii.\n_START_SECTION_\nAdresarea prin registre\n_START_PARAGRAPH_\nAdresarea prin registre este similar\xc4\x83 cu cea imediat\xc4\x83, prin aceea c\xc4\x83 nu implic\xc4\x83 accesarea memoriei, fiind un mod de adresare folosit tot pentru m\xc4\x83rirea vitezei de execu\xc8\x9bie. Avantajul fa\xc8\x9b\xc4\x83 de adresarea direct\xc4\x83 sau fa\xc8\x9b\xc4\x83 de cea imediat\xc4\x83 \xc3\xael reprezint\xc4\x83 faptul c\xc4\x83 nu mai este necesar ca valoarea operandului s\xc4\x83 fie cunoscut\xc4\x83 la compilare, el fiind preluat dintr-un registru al procesorului, registru precizat \xc3\xaen codul instruc\xc8\x9biunii. Compilatoarele cu optimizare caut\xc4\x83 s\xc4\x83 foloseasc\xc4\x83 la maximum acest mod de adresare, identific\xc3\xa2nd la compilare variabile folosite intens \xc3\xaen anumite por\xc8\x9biuni de cod \xc8\x99i aduc\xc3\xa2ndu-le din memorie \xc3\xaentr-un registru, pentru ca instruc\xc8\x9biunile ulterioare s\xc4\x83 acceseze valoarea de acolo. Astfel, se economisesc acces\xc4\x83ri ale memoriei (care se efectueaz\xc4\x83 la viteze mai mici dec\xc3\xa2t viteza de operare a procesorului), variabila fiind adus\xc4\x83 din memorie o singur\xc4\x83 dat\xc4\x83 pentru a fi folosit\xc4\x83 ca operand de mai multe instruc\xc8\x9biuni succesive.\n_START_SECTION_\nAdresarea direct\xc4\x83\n_START_PARAGRAPH_\n\xc3\x8en cazul adres\xc4\x83rii directe, \xc3\xaen cadrul instruc\xc8\x9biunii se precizeaz\xc4\x83 adresa exact\xc4\x83 de memorie a operandului. Acest mod de adresare este util \xc3\xaen condi\xc8\x9biile \xc3\xaen care adresa de memorie a operandului este cunoscut\xc4\x83 \xc3\xaen momentul compil\xc4\x83rii, a\xc8\x99a cum este cazul cu variabilele globale, a c\xc4\x83ror adres\xc4\x83 nu se modific\xc4\x83 pe timpul rul\xc4\x83rii unui program.'