2013-03-20 3 views
0

J'ai du mal à trouver un bon site qui explique MIPS et comment cela fonctionne.Que signifie ce code MIPs?

Le code que je suis en train de comprendre est:

SW 7000(R0),R1 

Je sais SW signifie sauver mot et qu'il sauve la valeur de R1 à l'adresse mémoire 7000. Quel est le point de (R0)? Qu'est ce que ça fait?

Existe-t-il une bonne ressource pour les problèmes que je rencontre dans cette situation?

Merci!

+0

Il n'y a pas de registre nommé "R0" ou "R1" dans MIPS. Le nom correct est $ name, comme $ 0, $ 7, $ a0, $ s1 –

Répondre

1

Ici R0 est un registre. Le placer entre parenthèses indique que vous utilisez un adressage indirect (ie: comme un pointeur): ne pas stocker dans R0, mais dans l'adresse stockée dans R0.

Le 7000 indique un décalage. Dans ce cas, vous auriez l'adresse stockée dans R0 + 7000.

+0

Dans la version de MIPS que j'utilise, il est dit que R0 est toujours 0. Ce code est-il inutile alors? Puis-je faire quelque chose comme SW 7000, R1? – Stephen

+0

l'instruction nécessite un registre donc en utilisant r0 signifie essentiellement utiliser l'immédiat comme l'adresse ... –

+0

grand merci! – Stephen

1

On dirait qu'il devrait être

SW R1, 7000(R0) 

où R1 et R0 sont des registres MIPS.

Il serait lu comme stocker le contenu du registre R1 dans l'adresse de mémoire effective 7000+R0. E.g. si R1 contient la valeur 10 et R0 contient la valeur 1192, alors il mémoriserait un mot (32 bits) avec la valeur 10 dans l'adresse mémoire 8192.

+0

Non, la façon dont il est écrit est correcte – Stephen

+0

Non, Gusbro a raison. Voir http://en.wikipedia.org/wiki/MIPS_architecture#Integer. – markgz

+0

en fait il devrait être 'sw $ 1, 7000 ($ 0)' –