El ancho del bus de datos del procesador no tiene nada que ver con la longitud de las instrucciones.
El procesador ARM puede manipular valores de 32 bits porque es un procesador de 32 bits, sea cual sea el modo en el que se esté ejecutando (pulgar o ARM). Solo significa que sus registros tienen 32 bits de ancho. Y los registros no cambian cuando cambias de modo.
Ahora, no tiene ninguna implicación en la longitud de las instrucciones . Las instrucciones podrían estar codificadas en cualquier longitud. El x86, por ejemplo, usa instrucciones de 8 bits pero también puede trabajar con valores de 32 bits. Para ARM, esto es lo que cambia cuando se cambia a / desde los modos ARM y pulgar.
Por ejemplo, la instrucción MOV R0, R1 (copie el contenido del registro R1 de 32 bits en el registro R0) se codifica de la siguiente manera:
- E1A00001 para BRAZO (32 bits)
- 4608 para el pulgar (16 bits)
Pero el procesador, al final, realizará exactamente la misma operación, y lo hará en datos de 32 bits de ancho, sea cual sea el modo.
Esta capacidad de cambiar de modo simplemente le permite decidir el compromiso entre la densidad del código y la flexibilidad. Puede incluir más instrucciones en un kB de código con instrucciones de 16 bits, pero las instrucciones de 32 bits son más flexibles (ofrecen más funciones y puede hacer más con una sola instrucción).