Wat is PC-relatieve adressering?

Methode om het doeladres van een sprong of gegevens uit te drukken als afstand tot het adres van de huidige instructie (PC). De afstand verandert niet waar het programma ook staat, dus vormt dit de basis voor positie-onafhankelijke code.

Japanse benaming: PC相対アドレッシング

“PC-relatieve adressering” komt voor in 2 oefenvragen uit 1 onderwerpen, bijv. Instructieset en assembly.

Vakgebied: Instructieset en assembly

Nu oefenen: vragen over PC-relatieve adressering

Welk voordeel van PC-relatieve adressering voor sprongen is juist?

  1. AHoe ver het sprongdoel ook ligt, het wordt altijd met één instructie bereikt
  2. BSprongvoorspelling is niet meer nodig en de pipeline stopt nooit
  3. CHet programma werkt zonder herschrijven van instructies, op welk geheugenadres het ook wordt geladen
Antwoord en toelichting tonen

Antwoord: C. Het programma werkt zonder herschrijven van instructies, op welk geheugenadres het ook wordt geladen

Een PC-relatieve sprong drukt de bestemming uit als afstand „zoveel bytes vanaf hier”, dus ook als het hele programma naar een ander adres wordt verschoven, verandert de afstand niet en werkt het ongewijzigd. Dit is de basis van position-independent code (PIC), zoals gebruikt in gedeelde bibliotheken. Omdat het aantal bits voor de afstand beperkt is, worden voor verre sprongen auipc en jalr gecombineerd. De noodzaak van sprongvoorspelling is niet afhankelijk van de manier van weergave.

“PC-relatieve adressering” in de toelichting

Vragen met “PC-relatieve adressering” (2)

  1. Welk voordeel van PC-relatieve adressering voor sprongen is juist?
  2. Hoe wordt het sprongdoel label weergegeven in de RISC-V-voorwaardelijke sprong-instructie „beq a0, a1, label”?

Verwante termen

Positie-onafhankelijke code (PIC) Sprongvoorspelling (branch prediction) Aanroepconventie (calling convention) ABI (application binary interface) Adresseringsmodus Assembler Bladfunctie (leaf function) Branch delay slot Callee-saved register Caller-saved register

Naar de woordenlijst