Usted tiene un número limitado de bits en una palabra de instrucción de 32 bits para crear un valor inmediato de 32 bits. Si no puede crearlo, tendrá que usar varias instrucciones u otros trucos (más lento, más memoria). Así que digamos que tienes 10 bits. Lo que sería más útil, poder crear
.
- 0 .. 1023, o
- -512 .. 511?
Puede decidir desde la intuición o desde los datos recopilados desde los back-end del compilador, pero en la mayoría de los casos, las personas han concluido que incluir al menos -1 es más útil que duplicar el rango en el lado positivo.
IIRC ARM decidió usar un esquema un poco más complejo, utilizando algunos de los bits disponibles para especificar en qué lugares se debe desplazar el valor hacia la izquierda. Esto sacrifica el número de valores pequeños que se pueden realizar, pero obtiene unos valores más grandes (muy separados), lo cual es bueno, por ejemplo, para campos de bits dentro de una palabra. Pero requiere hardware de cambio de barril. Los diseñadores de MIPS pensaron que los transistores necesarios para una palanca de cambios de barril se utilizarían mejor para otros propósitos.
El muy buen aspecto de la H & P libros es que cuantifican los efectos de tales decisiones de diseño. Lee todos sus libros, no solo este.