2011-09-30 22 views
6

Tengo curiosidad acerca de por qué hay algunas instrucciones de ARM (como MUL y QADD) no utiliza la palanca de cambios de barril. Me gustaría saber la razón detrás del límite. ¡Gracias!¿Por qué algunas instrucciones ARM no usan barril de cambio?

+0

Cambia un barril. No agrega ni se multiplica. –

+3

Creo que la pregunta se parece más a "¿Por qué no puedo usar un valor desplazado en barril como último argumento para MUL o QADD?" La razón podría ser silicio (no suficientes transistores para implementar), podría ser codificación (no hay espacio en la instrucción para codificar turnos), podría ser que ralentizaría demasiado la instrucción, podría ser solo la regla de menos 100 puntos . Solo los diseñadores de ARM saben con certeza. Preguntar aquí es poco probable que aparezca una respuesta. –

+0

Ya publico la pregunta en su foro. :) – chenwj

Respuesta

11

No es que el cambio de barril no es usado; es que no puede especificar cómo se usa en todas las instrucciones excepto en las muy específicas (procesamiento de datos y carga/almacenamiento). Si miras la codificación de la instrucción, verás que simplemente no hay espacio para especificarla. En el caso de instrucciones como MUL o SWP, no estaban en la primera versión de la arquitectura. Fueron incluidos en el conjunto de instrucciones haciendo uso de combinaciones de valores que de otro modo serían inválidas para la especificación de la palanca de cambio de barril. Dado que los bits de especificación de la palanca de cambio de barril tuvieron que reutilizarse para almacenar cosas como qué instrucción ejecutar y qué registro usar como multiplicador, simplemente no había forma de especificar cuánto mover/rotar el operando.

-3

Una palanca de cambio de barril se utiliza para cambios rápidos.

Como sabes si multiplicas un número con otro número que es una potencia de dos, solo tienes que cambiarlo a la izquierda. En este tipo de situaciones especiales puede usar un registro de desplazamiento. Pero en general las multiplicaciones son eficientes para seguir los diseños de multiplicadores normales.

Cuestiones relacionadas