wat is het gebruik van ori in dit deel van de MIPS-code?

Kan iemand het gebruik van “ori” hier uitleggen? Ik weet dat het bitsgewijze OF is, maar ik weet niet hoe het werkt of waarom het hier nodig is.

#objective of the program is to add 5 and 7
.data #variable declaration follow this line
.text #instructions follow this line
main:
ori $s0, $zero, 0x5
ori $s1, $zero, 0x7
add $t0, $s0, $s1
li $v0,10 # required for only QtSPIM
syscall # required for only QtSPIM
#end of program

Antwoord 1, autoriteit 100%

 ori $s0, $zero, 0x5
  ori $s1, $zero, 0x7

De twee instructies laden een constante van 0x05 in register $s0 en 0x07 in register $s1.

MIPS heeft geen instructie die een constante direct in een register laadt. Daarom wordt logische OR met een operand van nul en de directe waarde gebruikt als vervanging. Het heeft hetzelfde effect als bewegen. Vertaald naar c-stijl code zijn deze twee regels:

 $s0 = 0 | 0x05;
  $s1 = 0 | 0x07;

Je zou ook kunnen gebruiken:

 addi $s0, $zero, 0x5
  addi $s1, $zero, 0x7

Dit doet hetzelfde, maar gebruikt add in plaats van logisch of. Vertaald naar code zou dit zijn.

 $s0 = 0 + 0x05;
  $s1 = 0 + 0x07;

Other episodes