Recherche Expert en MIPS

Recherche Expert en MIPS - ASM - Programmation

Marsh Posté le 01-02-2006 à 14:56:23    

Bonjour, je cherche un expert en MIPS, et particulierement en terme de creation du language machine.
 
Je souhaite particulierement savoir comment est "geré" l'instruction sw, car en MIPS 32 bits, une instruction fait 32 bits, alors comment sur une seul instruction, stocker l'opcode de sw, l'index du registre qui va recevoir la valeur immediate, et la valeur immediate qui fait 32 bits ?? Tout ca depasse, c'est evident...
 
Est-ce que l'instruction est divisé en plusieurs sous-instructions a la compilation style :
 
sw r1, 0x89ABCDEF
 
||
\/
 
sh r1, 0x89AB
sll r1, r1, 8
xori r1, r1, 0xCDEF
 
ou bien est-ce totalement different ? Bref j'aimerais savoir comment on fait en MIPS pour charger une valeur immediate 32 bits dans un registre.
 
Merci d'avance pour votre aide.

Reply

Marsh Posté le 01-02-2006 à 14:56:23   

Reply

Marsh Posté le 20-02-2006 à 17:19:15    

Je découvre seulement le MIPS mais je crois pouvoir répondre à ta question.
 
Tu parles de charger une valeur immédiate dans un registre, mais ce n'est pas ce que fait 'sw', qui sert à enregistrer la valeur d'un registre à une adresse mémoire. C'est plutôt l'instruction 'li' dont tu as besoin, qui est en fait comme tu le supposes une pseudo-instruction. Je ne sais pas exactement comment elle est implémentée, mais ça doit être qqch comme ça:
 
li r1, 0x89ABCDEF
==>
lui r1, 0x89AB
addi r1, r1, 0xCDEF

Reply

Marsh Posté le 27-02-2006 à 10:52:20    

Oui c'est ce que je voulais dire, plutot charger une valeur immediate 32 bits dans un registre 32 bits. (en effet apres charger le registre en memoire ne pose plus de problemes)
 
Est-ce que quelqu'un peut confirmer ce que dit dividee (ne le prend pas mal dividee mais je ne peux pas me permettre de m'appuyer sur une supposition, meme si celle ci semble tres correcte ;))
 
En tout cas merci de ta participation, cela me fait quand meme avancer

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed