El diseño de todos los conjuntos de instrucciones es un compromiso complejo de múltiples vías, y la mayoría de los conjuntos de instrucciones también crecen con el tiempo. No caiga en la trampa de pensar que las decisiones de diseño tomadas para un conjunto de instrucciones son necesariamente óptimas.
El uso de instrucciones de tamaño fijo reduce la complejidad del decodificador de instrucciones, pero inevitablemente termina restringiendo el tamaño de los operandos inmediatos. Sus operandos deben ser más pequeños que sus instrucciones y mientras más bits le entreguen al operando inmediato, menos bits tendrá para codificar otras cosas.
En particular, si el tamaño de su instrucción es el mismo que el tamaño de sus datos (común en arquitecturas de risc de 32 bits como MIP y ARM), no puede tener un operando inmediato de tamaño completo.
Los enteros pequeños suben mucho, por lo que vale la pena dedicarles espacio de codificación de instrucciones. Probablemente encontrará que si reemplaza su valor inmediato con un número aleatorio de 32 bits, recibirá un error del ensamblador o lo tratará como una pseudo-instrucción y lo convertirá en varias instrucciones.
Con los números de punto flotante, los beneficios son mucho más cuestionables, es mucho más difícil encontrar un subconjunto útil, probablemente más difícil convertir ese subconjunto útil de nuevo en números de punto flotante de tamaño completo, y la matemática de punto flotante en general es / fue más lento que la matemática de enteros, por lo que hay menos presión para optimizar el recuento de instrucciones o evitar leer un valor de la memoria.