Către

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

În informatică , „ indirectarea ” (numită și referință indirectă ) este tehnica care vă permite să indicați un obiect sau o valoare prin referința sa, mai degrabă decât direct. Termenul este frecvent utilizat în limbaje de programare pentru a se referi la utilizarea pointerilor .

Teorie

Exemplu de acces la memorie

Cea mai simplă și comună formă de indirectare apare ori de câte ori un procesor accesează o memorie . Amintirile sunt de obicei organizate într-o secvență de celule, fiecare dintre ele conținând o valoare (o secvență de biți ), accesibilă prin adresa sa.

Când procesorul solicită conținutul unei celule de memorie, acesta furnizează adresa sa în memorie ( 1002 în exemplu), care îi returnează valoarea ( 17 în acest caz). Operațiunea de substituire a memoriei pentru conținut este cel mai simplu exemplu de indirectare.

Un exemplu mai complex de indirectare este cel referitor la metoda de adresare indirectă . În acest caz, conținutul celulei de memorie nu este direct valoarea dorită, ci este doar adresa acesteia; va fi necesar să accesați memoria a doua oară pentru a obține datele dorite.

Din nou din exemplul din lateral, dacă microprocesorul a făcut o adresare indirectă către numărul de locație 1003, ar efectua acești doi pași în ordine:

  • accesând celula 1003 ar găsi imediat valoarea 1001 (rezultat intermediar);
  • accesarea celulei 1001 ar obține în cele din urmă valoarea 610 (rezultatul final).

Acest tip de adresare necesită mai mult timp pentru a fi efectuat, deoarece necesită două accesuri distincte la memorie; din acest motiv a fost eliminat din procesoare în arhitectura RISC , în care pașii de mai sus trebuie să fie scrise în mod explicit. Un exemplu în limbajul asamblorului :

Procesor CISC Procesor RISC
mov R0, (1003) mov R0, 1003
mov R0, (R0)

În sensul său cel mai comun, termenul indirecție se referă la utilizarea pointerilor , care sunt echivalentul adresării indirecte într-un limbaj de programare la nivel înalt. În aceste limbi, adresele de memorie sunt indicate prin nume simbolice numite variabile , iar termenul pointer este folosit pentru a indica o variabilă (o celulă de memorie) destinată să conțină o adresă în loc de o valoare.

Formalismul folosit pentru a indica operația de indirectare depinde de limbajul utilizat. De exemplu, în limba c notația * VariableName este utilizată pentru a indica accesul la locația a cărei adresă este conținută în celula de memorie numită VariableName .

În acest context, operația inversă față de cea a indirecției se numește AddressOf (transl. Adresa de ) și constă în obținerea adresei de memorie a unei variabile date cu numele ei. În limba c această operație este reprezentată de simbolul & .

Limbajele de programare orientate pe obiecte tind să mascheze utilizarea indicatoarelor și a indicatoarelor din programator, în timp ce le folosesc extensiv în ele. În toate scopurile, fiecare obiect declarat sau utilizat în aceste limbi este accesat prin operația de indirectare, permițând astfel obținerea polimorfismului lor.

Elemente conexe

Informatică Portal IT : accesați intrările Wikipedia care se ocupă cu IT