Înmulțirea unei valori de registru cu o constantă în MIPS? (Programare, Mips, Înmulțire)

maxbr7t a intrebat.

Învăț cum să fac MIPS și sunt confuz în ceea ce privește înmulțirea. Să zicem că aș converti următorul cod C în MIPS.

c = b + a*3 

cu a,b,c stocate în registrele $s1,$s2,$s3 respectiv. Cum ar trebui să scriu a*3 în MIPS? Există o instrucțiune de tip addi pentru înmulțire sau trebuie să stochez 3 într-un registru temporar și să folosesc operatorul mult în felul următor?

addi $t0, $zero, 3
mult $s1,$t0

Dacă da, cum obțin valoarea finală sau produsul acestei operații pentru a-mi completa codul C?

Comentarii

  • Produsul pe 64 de biți se află în lo și hi registre. Utilizați operatorul mflo și mfhi pentru a obține valorile acestora (sau doar mflo dacă vă interesează doar cei 32 de biți mai puțin semnificativi). Consultați o referință a setului de instrucțiuni MIPS pentru mai multe informații despre aceste instrucțiuni. –  > Por Michael.
1 răspunsuri
Rahul Behl

Setul de instrucțiuni MIPS nu oferă o instrucțiune mult cu valoare imediată. Prin urmare, ar trebui să stocați valoarea într-un registru temporar și apoi să folosiți instrucțiunile mult. Rezultatul instrucțiunii mult ar fi stocat în registrele lo și hi, oferind cei 32 de biți inferiori ai rezultatului și, respectiv, cei 32 de biți superiori ai rezultatului.

Comentarii

  • deci, în acest caz, dacă a este ceva mic, cum ar fi a = 3, atunci aș fi interesat doar de ” mflo „, corect? –  > Por maxbr7t.