Pergunta

Estou trabalhando em um pequeno mini compilador enquanto tento aprender alguns MIPs aqui. Aqui está o meu problema:

MIPS tem uma instrução li (carregar imediato) que funcionaria assim

li $5,100

que carregaria 100 no registro 5.

No entanto, preciso carregar flutuadores nos registros agora e estou lutando para descobrir uma maneira de fazê -lo ... já que Li $ 5,2,5 não funciona.

Alguém tem algum conselho?

Estou trabalhando em C, eu estava pensando que poderia de alguma forma obter a representação inteira do flutuador com o qual estou trabalhando (ou seja, para que a representação binária dos flutuadores == a representação binária do INTS) então carregue o "número inteiro" no registro e o tratam como um flutuador a partir de então.

Talvez seja tarde demais, mas estou preso agora.

Foi útil?

Solução

Você precisará usar os registros de ponto flutuante para carregar seus carros alegóricos.

Ao invés de:

li $5,2.5

Tentar:

li.s $f5,2.5

Dê uma olhada nas instruções MFC1 e MTC1 para se mover entre os registros inteiros e o ponto flutuante.

Outras dicas

Marte não Parece ter instruções/pseudo -instruções que carregam valores imediatos do ponto flutuante nos registros flutuantes. Em vez disso, você precisa colocar o valor do ponto flutuante na memória e carregar o registro da memória:

.data
fp1: .double 2.5
fp2: .double -0.75

.text   
l.d $f0, fp1
l.d $f2, fp2
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top