Formato inmediato de mapa de bits ARM8

La expresión constante del operando2 tiene las siguientes disposiciones: "La constante debe corresponder a un mapa de bits de 8 bits, es decir, la constante se obtiene desplazando cíclicamente un bit par a la derecha de una constante de 8 bits". Esta oración significa que cuando se usa el duodécimo bit. Cuando se usa el segundo operando para representar un valor inmediato de 32 bits, el número de 8 bits se implementa mediante desplazamiento, y los ocho bits inferiores del segundo operando de 12 bits almacenan el "básico desplazado". "número (tome El rango de valores es de 0 a 255), y los cuatro bits superiores almacenan el número de dígitos que se desplazan cíclicamente hacia la derecha. Debido a que el bit es un número binario de cuatro dígitos, el rango de valores es de 0 a 15, y el bit de desplazamiento correspondiente es de 0 a 30 bits, es decir, si el número de "desplazamiento" es 0, significa que el número "básico" permanece sin cambios, si el dígito de "desplazamiento" es 1, significa que el " El número "básico" se desplaza cíclicamente a la derecha 2 bits en el espacio numérico de 32 bits. Si "desplaza" el dígito 5, significa que el número "básico" se desplaza cíclicamente 10 dígitos a la derecha en el espacio de 32 bits. espacio digital de bits, y si "desplaza" el dígito 10, significa que el número "básico" circula en el espacio digital de 32 bits. Desplace 20 lugares a la derecha, y así sucesivamente. Por ejemplo:

     Y R1, R2, # 0xff

     Cuando el procesador procesa el segundo operando 0xff de esta instrucción, debido a que 0xff es un número binario de 8 bits, el procesador lo coloca directamente en el número "básico" de 8 bits y el número de "desplazamiento" de 4 bits es 0.

     Y R1, R2, # 0x104

     Cuando el procesador procesa el segundo operando 0x104 de esta instrucción, debido a que 0x104 ha excedido el número binario de 8 bits en este momento, el procesador tiene que "transformarlo". Primero convertimos 0x104 en binario 0000 0000 0000 0000 0000 0001 0000 0100, podemos ver que este número es 0000 0000 0000 0000 0000 0000 0100 0001 que se obtiene girando a la derecha 30 bits, por lo que el resultado después de la transformación es que 0100 0001 se almacena en el número "básico" de 8 bits, y el "desplazamiento" El el número de dígitos es 15.

     Y R1, R2, # 0xff000000

     Cuando el procesador procesa el segundo operando 0xff000000 de esta instrucción, el procesador también tiene que "modificarlo". Primero convertimos 0xff000000 en binario 1111 1111 0000 0000 0000 0000 0000 0000, podemos ver que este número es 0000 0000 0000 0000 0000 0000 1111 1111 se obtiene girando 8 bits hacia la derecha, por lo que el resultado de la transformación es que 1111 1111 se almacena en el número "básico" de 8 bits y el número de "desplazamiento" es 4.

Supongo que te gusta

Origin blog.csdn.net/zilan23/article/details/104338031
Recomendado
Clasificación