Instructieset en assembly

Op een little-endian RISC-V is het register met 0x12345678 met „sw” naar adres 0x100 geschreven. Wat is de waarde als daarna met „lbu” het byte op adres 0x101 wordt gelezen?

  1. A0x34
  2. B0x56
  3. C0x78
Antwoord en toelichting tonen

Antwoord: B. 0x56

Bij little-endian wordt het laagste byte van de waarde op het laagste adres geplaatst. Bij 0x12345678 staan op 0x100 0x78, op 0x101 0x56, op 0x102 0x34 en op 0x103 0x12. Het byte op 0x101 is dus 0x56. Bij big-endian zouden vanaf 0x100 achtereenvolgens 0x12, 0x34, … staan en zou 0x101 0x34 zijn. Bij het werken met netwerk- of bestandsformaten moet op dit verschil worden gelet.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Instructieset en assembly

  1. Wat kan er gebeuren als het adres van een lw-instructie die 4 bytes leest in RISC-V geen veelvoud van 4 is (niet uitgelijnd)?
  2. Met welke factor van de waarde van a0 is het resultaat t0 van de RISC-V-instructie „slli t0, a0, 3” te vergelijken (overloop buiten beschouwing gelaten)?
  3. a0 bevat het beginadres van een array a van het type int (4 bytes) en a1 bevat de index i. Wat leest de bovenstaande code in a2?
  4. Welke uitspraak is juist over de methode waarbij rekeninstructies waarden in het geheugen rechtstreeks kunnen gebruiken, zoals de x86-instructie „add eax, [rbx]”?
  5. Welke uitleg over hoe huidige krachtige x86-CPU's complexe instructies intern uitvoeren is juist?