Simple MIPS question, à propos de la charge de l'octet
Ma question est la suivante ici
.data
a: .asciiz "2021"
x: .byte 7,2,12
.text
main: addi $t2, $0, 1
lb $t3, a($t2)
Quelqu'un peut m'expliquer, COMMENT la valeur de $t3 est de 48?
merci
EDIT c'est une autre question qui est similaire, et est source de confusion.
.data
a: .word 12,-5,4,0
x: .byte 5
.text
main: addi $t1, $0, 8
lw $t2, a($0)
lw $t3, a($t1)
Comment allez-vous vous charger word, à partir de l'index 8, quand 'une' a une longueur de 4?
Vous devez vous connecter pour publier un commentaire.
Oui, lorsque vous ajoutez
$0
et1
, vous obtenez1
, qui est mis en$t2
.Ensuite, lorsque vous évaluez
a($t2)
, c'est le deuxième octet (décalage de 1, car il est basé à l'offset 0) dea
qui est le "0", code ASCII0x30
ou48
.À partir de différents éléments d'information:
Ces bribes devrait être suffisant pour expliquer ce qu'il fait.
Et, s'agissant de votre montage, vous avez tort de penser que
.word 12,-5,4,0
a une longueur de 4 octets. En fait, il a une longueur de 16 octets étant donné que les mots en MIPS 32 bits (quatre octets) de large.Donc quand vous chargez de octet décalage 8, vous obtiendrez la mot
4
.0..9
sont des codes ASCII0x30..0x39
.Pour info il y a un ASCII tableau de la page 11 du document 4 😉
Mais je n'obtiens ceci:
"quand, lorsque vous évaluez une($t2), c'est le deuxième octet (décalage de 1, car il est basé à l'offset 0) de a qui est le "0""
La représentation binaire de "2021" je crois est:
00110010001100000011001000110001
Donc, quand vous dites "qui est le "0"" entendez-vous le 2ème bit en partant de la droite? C'est que le 0 vous êtes en train de parler?
Je n'obtiens pas le zero vient de.