Je suis bloqué à la conversion de l'instruction MIPS en code machine ci-dessous.MIPS Instruction to Machine Code
sb $t3, 40($s2)
beq $s0, $s1, Lab1
j Lab1
jr $s0
Jusqu'à présent, je
101000 10010 01011 101000
000100 10000 10001 0x00400000
Comment puis-je aller d'ici? Depuis 0x00400000 est l'adresse pas la valeur, je ne pense pas que je le traduis en binaire. Et ainsi de suite ... Je ne peux pas vraiment trouver un exemple à partir d'ici. S'il vous plaît aider.
Comment est-ce que je peux faire cela quand 0x00400000 est représenté 010000000000000000000000 (24 bits) quand dans I-type il devrait être 16? comment est-ce que je le comprime? – user3754212
Si '' 0x00400000'' représente l'adresse de '' Lab1'', alors vous devez encoder le nombre d'instructions que vous voulez sauter, ce que je crois juste '' adresse de l'instruction cible - adresse de l'instruction de branchement - 1'', mais je peux me tromper à ce sujet. Cependant, si '' 0x00400000'' représente déjà ce saut, alors ce n'est pas possible, et votre code doit être ajusté. –
En fait, à la réflexion j'ai réalisé qu'il serait possible d'assembler si '' 0x00400000'' était un décalage, mais il faudrait ajouter des instructions supplémentaires pour sauter plus loin que 16 bits normalement –