2009-07-22 31 views
6

que estoy haciendo un trabajo que implica MIPS montaje, y sigo viniendo a través de estos cuatro pseudoinstructions carga/almacenamiento de punto flotante: l.s, l.d, s.s, s.d. Encontré documentación en línea y descubrí que hay cuatro instrucciones "reales" que parecen hacer lo mismo: lwc1, ldc1, swc1 y sdc1.MIPS de punto flotante: SWC1 vs S.S

Mi única pregunta es, ¿cuál es la diferencia? Por lo que puedo decir, ambos conjuntos de instrucciones hacen exactamente lo mismo. ¿Los pseudos tal vez existen solo porque son más fáciles de leer?

Gracias de antemano por cualquier idea.

Respuesta

7

Mi única pregunta es, ¿cuál es la diferencia? Por lo que puedo decir, ambos conjuntos de instrucciones hacen exactamente lo mismo.

Sí, tienes razón. La única diferencia que podría aparecer es cuando una pseudoinstrucción se traduce a más de una instrucción "real".

¿Los pseudos quizás existen solo porque son más fáciles de leer?

Nuevamente, sí. Eso es por qué existen. Dan la ilusión de un conjunto de instrucciones más expresivo. Citando Computer organization and design/Patterson & Hennessy:

... el ensamblador también puede tratar las variaciones comunes de las instrucciones del lenguaje de la máquina como si fueran instrucciones por derecho propio. El hardware no necesita implementar estas instrucciones; sin embargo, su apariencia en un lenguaje de ensamblaje simplifica la traducción y la programación. ...

Dada su ejemplo, es más "claro" que decir:

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

que

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

, así como se puede comprender mejor:

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

que

add $7, $18, $0 

Para mí, los mnemónicos lo ayudan a obtener un código mejor legible.

2

De hecho, creo,

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

etc ...


Adivina qué, me ha golpeado en una página Patente tratando de recordar estos.

US Patent 5555384 - reprogramación en conflicto instrucciones emitidas por retrasar una instrucción en conflicto en la misma etapa de canalización como una tercera instrucción no conflictivos

Hay dos tipos de instrucciones de carga aplicadas por FPC 20:
LWC1 (Load Word Coprocessor 1, mostrado en la figura 4) y
LDC1 (Cargar doble palabra Coprocessor 1, mostrado en la figura 8).

LWC1 carga una palabra de 32 bits del subsistema de memoria en los registros generales de FPC.
LDC1 carga una palabra doble de 64 bits del subsistema de memoria en los registros generales de FPC.

que lo confirma.
(por cierto, no se moleste en buscar las cifras aquí mencionadas a menos que tenga acceso al sitio).

+0

Gracias, pero ya lo entendí (están enumerados en la documentación oficial). Tal vez debería haber sido más claro, pero mi pregunta fue la diferencia entre la versión de pseudoinstrucción de cada instrucción de carga/almacenamiento simple/doble y la versión real (lwc1 contra l.s, ldc1 contra l.d, etc.). –

+0

Esperaría que el motivo del psudocódigo y el nombre del conjunto de instrucciones sea la simplicidad y la portabilidad del psudocódigo a través de las variaciones en ISA. – nik

Cuestiones relacionadas