Pergunta

Eu estou fazendo algum trabalho envolvendo MIPS montagem, e eu continuo vindo através destas pseudo quatro carga de ponto flutuante / loja: l.s, l.d, s.s, s.d. Eu encontrei alguma documentação online e descobri que existem quatro instruções "reais" que parecem fazer a mesma coisa:. lwc1, ldc1, swc1 e sdc1

A minha única pergunta é, qual é a diferença? Tanto quanto eu posso dizer, ambos os conjuntos de instruções de fazer exatamente a mesma coisa. Será que os pseudos talvez existem apenas porque são mais fáceis de ler?

Agradecemos antecipadamente por qualquer insight.

Foi útil?

Solução

A minha única pergunta é, qual é a diferença? Tanto quanto eu posso dizer, ambos os conjuntos de instruções de fazer exatamente a mesma coisa.

Sim, você está certo. A única diferença que pode aparecer é quando um pseudo-instrução é traduzido para mais de uma instrução "real".

Será que os pseudos talvez existem apenas porque são mais fáceis de ler?

Mais uma vez, sim. Isso é por que eles existem. Eles dão a ilusão de um conjunto de instruções mais expressivo. Citando organização de computadores e design / Patterson e Hennessy :

... montadora também pode tratar variações comuns de instruções em linguagem de máquina como se fossem instruções em seu próprio direito. O hardware não precisa implementar estas instruções; no entanto, sua aparência em linguagem aassembly simplifica tradução e programação. ...

Dado o seu exemplo, é mais "claro" para dizer:

l.s $f2, 24(t1)       # Load Single contained in 24(t1) to $f2

de

lwc1 $f2, 24(t1)      # Load Word into Coprocessor 1 from 24(t1) to $f2

, assim como você pode entender melhor:

move $7, $18        # move contents of $18 to $7

de

add $7, $18, $0

Para mim, é apenas ser ajudado por mnemônicos para obter o código melhor legível.

Outras dicas

Na verdade eu acho que,

LWC1 is Load Word to Co-processor 1
LDC1 is Load Double Word to Co-processor 1

etc ...


Adivinha o quê, eu bati em uma página de Patentes tentando lembrar estes.

US Patent 5.555.384 - conflitantes Reprogramação instruções emitidas por atrasar uma instrução conflitantes no mesmo estágio do pipeline como uma terceira instrução não conflitantes

Existem dois tipos de instruções de carga implementadas pela FPC 20:
LWC1 (Carga Palavra coprocessador 1, mostrado na FIG. 4) e
LDC1 (Carga Palavra Dupla coprocessador 1, mostrado na FIG. 8).

cargas LWC1 uma palavra de 32-bit do subsistema de memória nos registos gerais FPC.
cargas LDC1 um 64-bit palavra dupla do subsistema de memória nos registos gerais FPC.

, que confirma.
(Btw: não se preocupam em procurar os números aqui referidos, a menos que ter acesso ao site).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top