Wat is Pseudo-instructie?

Wordt in assembly als een instructie geschreven, maar door de assembler vervangen door een of meer echte instructies. Voorbeelden bij RISC-V zijn nop, mv, li, j en ret.

Japanse benaming: 疑似命令

“Pseudo-instructie” komt voor in 4 oefenvragen uit 1 onderwerpen, bijv. Instructieset en assembly.

Vakgebied: Instructieset en assembly

Nu oefenen: vragen over Pseudo-instructie

Door welke instructie vervangt de assembler in werkelijkheid de RISC-V-pseudo-instructie „nop” (doe niets)?

  1. Aaddi x0, x0, 0
  2. Bjal ra, 0
  3. Clw x0, 0(sp)
Antwoord en toelichting tonen

Antwoord: A. addi x0, x0, 0

RISC-V heeft geen speciale instructie voor „niets doen”; nop wordt uitgedrukt als „addi x0, x0, 0”. Schrijven naar x0 wordt weggegooid, dus noch registers noch geheugen veranderen. Evenzo is „mv rd, rs” gelijk aan „addi rd, rs, 0”, „j label” aan „jal x0, label” en „ret” aan „jalr x0, 0(ra)”. Het ontwerpidee van RISC-V is het aantal instructiesoorten klein te houden met behulp van x0.

Als welke instructie wordt de RISC-V-pseudo-instructie „ret” in werkelijkheid uitgevoerd?

  1. Ajal ra, 0
  2. Bjalr x0, 0(ra)
  3. Clw ra, 0(sp)
Antwoord en toelichting tonen

Antwoord: B. jalr x0, 0(ra)

jalr (jump and link register) springt naar het adres dat ontstaat door een offset op te tellen bij een registerwaarde en plaatst het adres van de volgende instructie in de bestemming. ret is „jalr x0, 0(ra)”: het springt naar het adres in ra en gooit de link in x0 weg. jalr wordt ook gebruikt voor sprongen waarvan het doel pas tijdens uitvoering bekend is, zoals bij functiepointers en aanroepen van virtuele functies. „lw ra, …” om ra te herstellen is een voorbereiding vóór ret.

“Pseudo-instructie” in de toelichting

Vragen met “Pseudo-instructie” (4)

  1. Door welke instructie vervangt de assembler in werkelijkheid de RISC-V-pseudo-instructie „nop” (doe niets)?
  2. Als welke instructie wordt de RISC-V-pseudo-instructie „ret” in werkelijkheid uitgevoerd?
  3. Wat is de waarde van t0 nadat de bovenstaande RISC-V-code is uitgevoerd?
  4. Welke werking van de RISC-V-instructie „jal ra, func” is juist?

Verwante termen

Assembler Aanroepconventie (calling convention) ABI (application binary interface) Adresseringsmodus Bladfunctie (leaf function) Branch delay slot Callee-saved register Caller-saved register Conditiecode (condition code) Frame pointer

Naar de woordenlijst