Resumen Del Conjunto de Instrucciones

40
Resumen capítulos 1, 2, 3, 4 de Cortex-M3-M4F Instruction Set. Resumen del conjunto de instrucciones El procesador implementa una versión del conjunto de instrucciones T1.1 Los paréntesis angulares, <>, encierran formas alternativas del operando. Los apoyos, {}, encierre operandos opcionales. La columna Operandos no es exhaustiva. Op2 es un segundo operando flexible que puede ser o bien un registro o una constante. La mayoría de las instrucciones puede utilizar un sufijo código de condición opcional.

description

conjunto de instrucciones tiva c

Transcript of Resumen Del Conjunto de Instrucciones

Resumen capítulos 1, 2, 3, 4 deCortex-M3-M4F Instruction Set.

Resumen del conjunto de instruccionesEl procesador implementa una versión del conjunto de instrucciones T1.1

Los paréntesis angulares, <>, encierran formas alternativas del operando. Los apoyos, {}, encierre operandos opcionales. La columna Operandos no es exhaustiva. Op2 es un segundo operando flexible que puede ser o bien un registro o una constante. La mayoría de las instrucciones puede utilizar un sufijo código de condición opcional.

OperandoUn operando de la instrucción puede ser un Cortex-M3 / M4F registro ARM, una constante, u otra instrucción específica de parámetros. Instrucciones actúan sobre los operandos y suelen almacenar el resultado en un registro de destino. 

Restricciones al utilizar el PC o SPMuchas instrucciones tienen restricciones sobre si puede utilizar el contador de programa (PC) o Pila Puntero (SP) para los operandos o registro de destino. 

Importante: Bit [0] de cualquier dirección que usted escribe al PC con un BX, BLX, LDM, LDR, o instrucción POP debe ser 1 para la ejecución correcta, porque este bit indica el conjunto de instrucciones se requiere, y el procesador Cortex-M3 / M4F sólo admite instrucciones Thumb.

Flexible segundo operandoMuchas instrucciones generales de procesamiento de datos tienen un segundo operando flexible. Esto se muestra comoOperand2 en las descripciones de la sintaxis de cada instrucción.Operand2 puede ser una constante o un registro con desplazamiento opcional.

ConstanteSe especifica una constante Operand2 en la forma:# Constante donde puede ser constante (X e Y son dígitos hexadecimales):Cualquier constante que puede ser producida desplazando un valor de 8 bits a la izquierda por cualquier número de bits dentro de unaPalabra de 32 bits.

1. Cualquier constante de la forma 0x00XY00XY.2. Cualquier constante de la forma 0xXY00XY00.3. Cualquier constante de la forma 0xXYXYXYXY.

Cuando una constante de Operand2 se utiliza con los MOVS instrucciones, MVNS, ANDS, PROs, ORNs, EOrs,BICS, EQT o TST, la bandera de acarreo se actualiza a poco [31] de la constante, si la constante es mayor que 255 y se puede producir por desplazamiento de un valor de 8

bits. Estas instrucciones no afectan a la bandera de acarreo si Operand2 es cualquier otra constante.Su ensamblador podría ser capaz de producir una instrucción equivalente en los casos en que se especifica unconstante que no está permitido. Por ejemplo, un ensamblador puede ensamblar la instrucción CMP Rd,# 0xFFFFFFFE como la instrucción equivalente CMN Rd, # 0x2.

Registro con cambio opcionalSe especifica un registro Operand2 en la forma:Rm (, shift)donde:Rm: Es el registro que contiene los datos para el segundo operando.Shift: Es un cambio opcional que se aplicará a Rm. Puede ser uno de:

ASR # nDesplazamiento aritmetico a la derecha n bits, 1 ≤ n ≤ 32.LSL # nDesplazamiento lógico a la izquierda n bits, 1 ≤ n ≤ 31.LSR # nDesplazamiento lógico a la derecha n bits, 1 ≤ n ≤ 32.ROR # nRotar a la derecha n , 1 ≤ n ≤ 31.RRXRota a la derecha un bit, con extend.Si se omite, LSL # 0.

Operaciones de desplazamientoInscripción operaciones de desplazamiento se mueven los bits en un registro a la izquierda oa la derecha de un número especificado de bits, las de desplazamiento de longitud. Registro de desplazamiento se puede realizar: Directamente en las instrucciones de ASR, LSR , LSL , ROR , y RRX , y el resultado se escribe en un destino registrarse.Durante el cálculo de Operand2 por las instrucciones que especifican el segundo operando como se registra en el cambio. El resultado es utilizado por la instrucción.

Alineación de DirecciónUn acceso alineado es una operación donde se utiliza una dirección de palabra alineados para una palabra, palabra doble, o el acceso de varias palabras, o cuando una dirección media palabra alineados se utiliza para un acceso media palabra. Byte

Accesos siempre están alineados. Los procesadores Cortex-M3 / M4f apoyar el acceso no alineado sólo para las siguientes instrucciones:

1.  LDR , TRV2. LDRH , LDRHT3.  LDRSH , LDRSHT4.  STR , STRT5.  STRH , STRHT

El resto de las instrucciones de carga y almacenamiento generan una excepción error si no se encuentran alineados

Expresiones en PC RelativaUna expresión de PC pariente o etiqueta es un símbolo que representa la dirección de una instrucción o literal datos. Se representa en la instrucción como el PC, más o menos un valor numérico offset. El ensamblador Calcula el desplazamiento necesario de la etiqueta y la dirección de la instrucción actual. Si el desplazamientoes demasiado grande, el ensamblador produce un error.Nota:Para B , BL , CBNZ y CBZ instrucciones, el valor de la PC es la dirección de la instrucción actual más 4 bytes.Para todas las demás instrucciones que utilizan etiquetas, el valor de la PC es la dirección actual.

Ejecución condicionalLa mayoría de las instrucciones de procesamiento de datos se pueden actualizar opcionalmente los indicadores de condición en la aplicación Estado del Programa de Registro (APSR) registrar de acuerdo con el resultado de la operación. Puede ejecutar una instrucción condicional, en base a los indicadores de condición establecidos en otra instrucción, ya sea inmediatamente después de la instrucción que actualiza las banderas, o después de cualquier número de intervenir Instrucciones que no han actualizado las banderas.

Indicadores de condiciónEl Estado del Programa de Aplicación Registro (APSR) contiene los siguientes indicadores de condición:N. establece en 1 cuando el resultado de la operación fue negativo; despejado a 0 en caso contrario. Z. Se establece en 1 cuando el resultado de la operación fue de cero; despejado a 0 en caso contrario.C. Puesto a 1 cuando la operación se saldó con un acarreo; despejado a 0 en caso contrario.

V. Se establece en 1 cuando la operación causó el desbordamiento; despejado a 0 en caso contrario.Un acarreo se produce: Si el resultado de una adición es mayor que o igual a 232Si el resultado de una resta es positivo o ceroComo resultado de una operación de la palanca de cambios barril en línea en un movimiento o instrucción lógico.

Desbordamiento se produce si el resultado de una operación añadir, restar, o comparar es mayor o igual a 231, O menos que -231.

Código de condición sufijosLas instrucciones que pueden ser condicionales tienen un código de condición opcional, que se muestra en las descripciones de sintaxis como { cond }. Ejecución condicional requiere un precedente TI instrucción. Una instrucción con una condición sólo se ejecuta si las banderas de condición en APSR cumplen la condición especificada. 

Ejemplo 1-1. Valor AbsolutoMOVS R0, R1;  R0 = R1, el establecimiento de las banderas.IT MI ;  Instrucción de TI para la condición negativa.RSBMI R0, R1, # 0; Si es negativo, R0 = -R1.

Ejemplo 1-2. Comparar y actualizar Valor

CMP R0, R1;  Comparar R0 y R1, fijando banderasITT GT;  Instrucción de TI para las dos condiciones GTCMPGT R2, R3 ;  Si "mayor que", comparar R2 y R3, el establecimiento de las banderasMOVGT R4, R5;  Si aún "mayor que", hacer R4 = R5

Ancho Instrucción SelecciónHay muchas instrucciones que pueden generar o bien una codificación de 16 bits o una codificación de 32 bits dependiendo en los operandos y registro de destino especificados. Para algunas de estas instrucciones, puede forzar una tamaño de la instrucción específica mediante un sufijo ancho de instrucciones. El .W sufijo obliga a una instrucción de 32 bits codificación. El .N sufijo obliga a una codificación de instrucción de 16 bits.

Ejemplo 1-3. Ancho Instrucción Selección

BCS.W Etiqueta;  crea una instrucción de 32 bits incluso para una rama cortaADDS.W R0, R0, R1; crea una instrucción de 32 bits aunque el mismo ; operación se puede hacer por una instrucción de 16 bits

Instrucciones de acceso de memoria

ADRGenerar dirección-PC relativa.SintaxisADR { cond } Rd , etiqueta

Dónde:Cond Es un código de condición opcional. Rd Es el registro de destino.Etiqueta Es una expresión de PC relativa. 

OperaciónADR determina la dirección mediante la adición de un valor inmediato a la PC, y escribe el resultado del registro de destino.

RestriccionesRd no debe ser SP y no debe ser PC .

EjemplosADRR1, TextMessage; Valor de la dirección de escritura de una ubicación marcada como ; TextMessage a R1.

LDR y STR (inmediata Offset)Cargar y tienda con inmediata offset, pre-indexados compensado inmediata, o post-indexados inmediata

donde:Op Es uno de:LDR Cargar en el Registro.STR Guarde Registro.Tipo Es uno de:B Byte sin signo, cero se extienden a 32 bits en las cargas.SB Firmado byte, signo extiende a 32 bits ( LDR solamente).

H Media palabra sin signo, cero se extienden a 32 bits en las cargas.SH Firmado media palabra, signo extiende a 32 bits ( LDR solamente).- Omite, por palabra.Cond Es un código de condición opcional. Rt Es el registro para cargar o almacenar.Rn Es el registro en el que se basa la dirección de memoria.Offset Es un desplazamiento de Rn . Si desplazamiento se omite, la dirección es el contenido de Rn .Rt2 Es el registro adicional para cargar o almacenar para las operaciones de dos palabras.

RestriccionesPara obtener instrucciones de carga:

1.  Rt puede ser SP o PC sólo para cargas de palabras.2.  Rt debe ser diferente de Rt2 para cargas de dos palabras.3.  Rn debe ser diferente de Rt y Rt2 en las formas pre-indexados o post

indexado.4. Cuando Rt es PC en una instrucción de carga palabra:5. Bit [0] del valor cargado debe ser 1 para la ejecución correcta.6. Una rama se produce a la dirección creada cambiando poco [0] del valor

cargado a 0.7. Si la instrucción es condicional, debe ser la última instrucción en la TI bloque.8. Para almacenar instrucciones:9.  Rt puede ser SP sólo para tiendas de palabras.10. Rt no debe ser PC .11. Rn no debe ser PC .12. Rn debe ser diferente de Rt y Rt2 en las formas pre-indexados o post

indexado.

Indicadores de condiciónEstas instrucciones no cambian las banderas.

Ejemplos

LDR y STR (Registrar Offset)

Sintaxisop { tipo } { cond } Rt , [ Rn , Rm {, LSL # n }]

Dónde:Op Es uno de:LDR Cargar en el Registro.STR Guarde Registro.Tipo Es uno de:B Byte sin signo, cero se extienden a 32 bits en las cargas.SB Firmado byte, signo extiende a 32 bits ( LDR solamente).H Media palabra sin signo, cero se extienden a 32 bits en las cargas.SH Firmado media palabra, signo extiende a 32 bits ( LDR solamente).

- Omite, por palabra.Cond Es un código de condición opcional. Rt Es el registro para cargar o almacenar.Rn Es el registro en el que se basa la dirección de memoria.Rm Es un registro que contiene un valor que se utilizará como el desplazamiento.LSL # n Es un cambio opcional, con n en el rango de 0 a 3.

OperaciónLDR operaciones cargan un registro con un valor de la memoria.STR instrucciones almacenan un valor de registro en la memoria.La dirección de memoria para cargar desde o almacenar a que está en un desplazamiento desde el registro Rn . El desplazamiento es especificada por el registro Rm y puede ser desplazado a la izquierda hasta 3 bits utilizando LSL .

RestriccionesEn estas instrucciones:

1.  Rn no debe ser PC .2.  Rm no debe ser SP y no debe ser PC .3.  Rt puede ser SP sólo para cargas de palabras y tiendas de palabras.4.  Rt puede ser PC sólo para cargas de palabras.5. Cuando Rt es PC en una instrucción de carga palabra:6. Bit [0] del valor cargado debe ser 1 para la ejecución correcta, y una rama se

produce a esta7. dirección media palabra-alineado.8. Si la instrucción es condicional, debe ser la última instrucción en la TI bloque.

LDR y STR (acceso sin privilegios)Sintaxisop { tipo } T { cond } Rt , [ Rn {, # compensado }] ; compensado inmediataDónde:Op Es uno de:LDR Cargar en el Registro.STR Guarde Registro.Tipo Es uno de:B Byte sin signo, cero se extienden a 32 bits en las cargas.SB Firmado byte, signo extiende a 32 bits ( LDR solamente).H Media palabra sin signo, cero se extienden a 32 bits en las cargas.SH Firmado media palabra, signo extiende a 32 bits ( LDR solamente).

- Omite, por palabra.Cond Es un código de condición opcionalRt Es el registro para cargar o almacenar.Rn Es el registro en el que se basa la dirección de memoria.Offset Es un desplazamiento desde Rn y puede ser de 0 a 255. Si desplazamiento se omite, la dirección es el valor en Rn .OperaciónEstas instrucciones de carga y almacenamiento realizan la misma función que las instrucciones de acceso a memoria con compensación La diferencia es que estas instrucciones sólo tienen un acceso sin privilegios, incluso cuando se utiliza en software privilegiada. Cuando se utiliza en software sin privilegios, estas instrucciones se comportan exactamente de la misma manera como normalesInstrucciones de acceso a memoria con compensación inmediata.

OperaciónLDR carga un registro con un valor de una dirección de memoria PC-relativa. La dirección de memoria es especificado por una etiqueta o un desplazamiento desde el PC.El valor de la carga o la tienda puede ser un byte, media palabra, o una palabra. Para obtener instrucciones de carga, bytes y medias palabraso bien se puede con o sin signo

OperaciónLDREX , LDREXB y LDREXH cargan una palabra, byte, y media palabra, respectivamente, de una dirección de memoria.

STREX , STREXB y STREXH intenta almacenar una palabra, byte, y media palabra, respectivamente, a una memoria dirección. La dirección utilizada en cualquier instrucción-Store exclusivo debe ser la misma que la dirección enla instrucción de carga exclusiva ejecutado más recientemente. El valor almacenado por la tienda-Exclusiva instrucción también debe tener el mismo tamaño de los datos como el valor cargado por el anterior Load-exclusiva

Importante: El resultado de la ejecución de una instrucción-Store exclusivo a una dirección que es diferente dela utilizada en la instrucción de carga Exclusivo anterior es impredecible.

Instrucciones de procesamiento de datos generales

ADD, ADC, SUB, SBC, y RSBAñadir, Añadir con equipaje, Restar, Restar con equipaje, y Restar inversa.

op {S} { cond } { Rd ,} Rn , Operand2op { cond } { Rd ,} Rn , # imm12; ADD y sólo SUBDónde:Op Es uno de:AÑADIR Agregar.ADC Añadir con Carry.

SUB Resta.SBC Restar con Carry.RSB Reste la inversa.S Es un sufijo opcional. Si se especifica S, las banderas de código de condición se actualizan en el resultado de la

OperaciónEl ADD instrucción suma el valor de Operand2 o imm12 al valor en Rn .El ADC instrucción suma los valores de Rn y Operand2 , junto con la bandera de acarreo.El SUB instrucción resta el valor de Operand2 o imm12 del valor en Rn .El SBC instrucción resta el valor de Operand2 del valor en Rn . Si la bandera de acarreo es clara,el resultado se reduce en uno.El RSB instrucción resta el valor de Rn a partir del valor de Operand2 . Esto es útil porquede la amplia gama de opciones para Operand2 .Uso ADC y SBC para sintetizar aritmética multiword. Nota: ADDW es equivalente a la ADD sintaxis que utiliza el imm12 operando. SUBW es equivalente ael SUB sintaxis que utiliza el imm12 operando.

Indicadores de condiciónSi se especifica S, estas instrucciones de actualización las N , Z , C y V banderas de acuerdo con el resultado.EjemplosADD R2, R1, R3SUB R8, R6, # 240; Establece las banderas en el resultado.RSB R4, R4, # 1280 ; Resta contenido de R4 de 1280.ADCHI R11, R0, R3 ; Sólo ejecuta si C bandera ajustado y Z ; bandera clara.Ejemplo. La adición de 64 BitADDS R4, R0, R2 ; Añadir las palabras menos significativos.ADC R5, R1, R3 ; Añadir las palabras más significativas con equipaje.

Indicadores de condiciónSi se especifica S, estas instrucciones: Actualizar el N y Z banderas de acuerdo con el resultado. Puede actualizar el C bandera durante el cálculo de Operand2 . Ejemplos

Y R9, R2, # 0xFF00ORREQ R2, R0, R5ANDS R9, R8, # 0x19EORs R7, R11, # 0x18181818BIC R0, R1, # 0xabORN R7, R11, R14, ROR # 4ORNs R7, R11, R14, ASR # 3259

ASR, LSL, LSR, ROR, y RRXShift Aritmética Derecho, desplazamiento lógico Izquierda, Derecha Desplazamiento Lógico, Girar a la derecha y Rotar a la derecha con Extender.

Sintaxisop {S} { cond } Rd , Rm , Rsop {S} { cond } Rd , Rm , # nRRX {S} { cond } Rd , RmDonde:Op Es uno de:ASR Shift Aritmética Derecho.LSL Shift izquierdo lógico.LSR Desplazamiento lógico Derecho.ROR Girar a la derecha.S Es un sufijo opcional. Si se especifica S, las banderas de código de condición se actualizan en el resultado de la operación. 

CLZ

SintaxisCLZ { cond } Rd , RmDónde:Cond Es un código de condición opcional.Rd Es el registro de destino.Rm Es el registro de operando.

OperaciónEl CLZ instrucción cuenta el número de ceros a la izquierda en el valor de Rm y devuelve el resultado enRd . El valor del resultado es 32 si no se ponen bits en el registro de origen, y cero si el bit [31] se ajusta.CMP y CMNSintaxis

CMP { cond } Rn , Operand2CMN { cond } Rn , Operand2Dónde:Cond Es un código de condición opcional.Rn Es el registro de retención del primer operando.Operand2 Es un segundo operando flexible. OperaciónEstas instrucciones comparan el valor en un registro con Operand2 . Se ponen al día los indicadores de condición en el resultado, pero no grabar el resultado en un registro.El CMP instrucción resta el valor de Operand2 del valor en Rn . Esto es lo mismo que unaSUBS instrucción, excepto que el resultado se descarta.El CMN instrucción suma el valor de Operand2 al valor en Rn . Esto es lo mismo que un ADDS instrucción, excepto que el resultado se descarta.MOV y MVNMOV {S} { cond } Rd , Operand2MOV { cond } Rd , # imm16MVN {S} { cond } Rd , Operand2Dónde:S Es un sufijo opcional. Si se especifica S, las banderas de código de condición se actualizan en el resultado de la operación. Sintaxis orientar la operación de desplazamientoInstrucción MOVASR {S} {cond} Rd, Rm, #nMOV {S} {cond} Rd, Rm, #n ASRLSL {S} {cond} Rd, Rm, #nMOV {S} {cond} Rd, Rm, LSL #n (si n ! = 0)LSR {S} {cond} Rd, Rm, #nMOV {S} {cond} Rd, Rm, LSR #nROR {S} {cond} Rd, Rm, #nMOV {S} {cond} Rd, Rm, ROR #nRRX {S} {cond} Rd, RmMOV {S} {cond} Rd, Rm, RRXAdemás, el MOV instrucción permite otras formas de Operand2 como sinónimos de instrucciones de desplazamiento.

Sinónimo Instrucción MOVInstrucción ShiftMOV {S} {cond} Rd, RM, LSL RsLSL {S} {cond} Rd, Rm, RS

MOV {S} {cond} Rd, RM, LSR RsLSR {S} {cond} Rd, Rm, RSMOV {S} {cond} Rd, RM, ROR RsROR {S} {cond} Rd, Rm, RSEl MVN instrucción toma el valor de Operand2 , realiza una función lógica NO operación en la valor, y coloca el resultado en Rd .Nota: El MOVW de instrucciones proporciona la misma función que MOV , pero se limita a la utilización de la imm16

EjemploMOVS R11, # 0x000B ; Escribir valor de 0x000B a R11, banderas se actualiza.MOV R1, # 0xFA05 ; Escribir valor de 0xFA05 a R1, banderas no se actualizan.MOVS R10, R12 ; Escribir en valor R12 a R10, banderas se actualiza.MOV R3, # 23 ; Escribir valor de 23 a R3.MOV R8, SP ; Escribir valor del puntero de pila para R8.MVNS R2, # 0xF ; Escribir valor de 0xfffffff0 (bit a bit inverso de 0xF) ; a R2 y banderas de actualización.SintaxisMOVT { cond } Rd , # imm16OperaciónMOVT escribe un 16-bit de valor inmediato, imm16 , a la media palabra superior, Rd [31:16] , de su destino registrarse. La escritura no afecta Rd [15: 0].El MOV, MOVT par de instrucciones permite generar cualquier constante de 32 bits.

SADD16 y SADD8

Sintaxisop { cond } { Rd ,} Rn , RmOperaciónUtilice estas instrucciones para realizar una media palabra o byte agregar en paralelo:El SADD16 instrucción:1. Añade cada media palabra de la primera operando a la media palabra correspondiente de la segunda operando.2. Escribe el resultado en las medias palabras correspondientes del registro de destino.El SADD8 instrucción:1. Añade cada byte de la primera operando en el byte correspondiente del segundo operando.2. Escribe el resultado en los bytes correspondientes del registro de destino.

Indicadores de condiciónEstas instrucciones no cambian las banderas.

EjemplosSADD16 R1, R0; Añade las medias palabras de R0 a las medias palabras correspondientes de; R1 y escribe a media palabra de R1 correspondiente.SADD8 R4, R0, R5; Añade bytes de R0 para el byte correspondiente en R5 y escrituras; para el byte correspondiente en R4.

SHADD16 y SHADD8Sintaxisop { cond } { Rd ,} Rn , RmOperaciónUtilice estas instrucciones para agregar datos de 16 bits y 8 bits y luego reducir a la mitad el resultado antes de escribir el resultado al registro de destino:El SHADD16 instrucción:1. Añade cada media palabra de la primera operando a la media palabra correspondiente de la segunda operando.2. baraja el resultado por un bit hacia la derecha, reducir a la mitad los datos.3. Escribe los resultados media palabra en el registro de destino.El SHADDB8 instrucción:1. Añade cada byte de la primera operando en el byte correspondiente del segundo operando.2. baraja el resultado por un bit hacia la derecha, reducir a la mitad los datos.

SHASX y SHSAXFirmado Reducir a la mitad sumar y restar con Exchange y firmado Reducir a la mitad y Restar Añadir conop { cond } { Rd }, Rn , RmOperaciónEl SHASX instrucción:1. Añade la media palabra parte superior de la primera operando con la media palabra inferior del segundo operando.2. Escribe el resultado de la media palabra, además de la media palabra superior del registro de destino, desplazadopor un bit hacia la derecha provocando una división por dos, o la mitad.3. Resta la parte superior de la media palabra segundo operando de la HighWord parte inferior del primer operando.4. Escribe el resultado media palabra de la división en la parte inferior de la media palabra de registro de destino, desplazado por un bit hacia la derecha provocando una división por dos, o la mitad.

El SHSAX instrucción:1. Resta la media palabra inferior del segundo operando de la HighWord parte superior de la primera operando.2. escribe el resultado de la media palabra Además de la parte inferior de la media palabra de registro de destino, desplazado por un bit hacia la derecha provocando una división por dos, o la mitad.3. Añade la media palabra inferior del primer operando con la media palabra la parte superior del segundo operando.

SHSUB16 y SHSUB8Sintaxisop { cond } { Rd ,} Rn , RmOperaciónUtilice estas instrucciones para agregar datos de 16 bits y 8 bits y luego reducir a la mitad el resultado antes de escribir el resultado al registro de destino:El SHSUB16 instrucción:1. Resta cada media palabra del segundo operando de las medias palabras correspondientes de la primer operando.2. baraja el resultado por un bit hacia la derecha, reducir a la mitad los datos.3. Escribe los resultados media palabra en mitades, el registro de destino.El SHSUBB8 instrucción:1. Resta cada byte de la segunda operando desde el byte correspondiente del primer operando,2. Shuffles el resultado por un bit hacia la derecha, reducir a la mitad los datos,SSUB16 y SSUB8Sintaxisop { cond } { Rd ,} Rn , RmOperaciónUtilice estas instrucciones para cambiar endianness de datos:El SSUB16 instrucción:1. Resta cada media palabra desde el segundo operando de la media palabra correspondiente de la primer operando2. Escribe el resultado diferencia de dos medias palabras firmados en la media palabra correspondiente de la registro de destino.El SSUB8 instrucción:1. Resta cada byte de la segunda operando desde el byte correspondiente del primer operando2. Escribe el resultado diferencia de cuatro bytes firmados en el byte correspondiente del destino registrarse.SASX y SSaxSintaxis

op { cond } { Rd }, Rm , Rnop { cond } { Rd }, Rm , RnOperaciónEl SASX instrucción:1. Agrega la media palabra superior firmada del primer operando con la media palabra inferior firmada del segundo operando.2. Escribe el resultado con signo de la adición a la media palabra superior del registro de destino.3. Resta el media palabra inferior firmada del segundo operando desde la parte superior HighWord firmado deel primer operando.4. Escribe el resultado con signo de la resta de la media palabra inferior del registro de destino.El SSax instrucción:1. Resta el media palabra inferior firmada del segundo operando desde la parte superior HighWord firmado deel primer operando.2. Escribe el resultado con signo de la adición a la media palabra inferior del registro de destino.TST y EQTSintaxisTST { cond } Rn , Operand2EQT { cond } Rn , Operand2OperaciónEstas instrucciones de la prueba el valor en un registro contra Operand2 . Se ponen al día los indicadores de condición basado en el resultado, pero no escribir el resultado en un registro.El TST instrucción realiza una operación AND bit a bit en el valor de Rn y el valor de Operand2 .Este es el mismo que el ANDS instrucción, excepto que descarta el resultado.UADD16 y UADD8Sintaxisop { cond } { Rd ,} Rn , RmOperaciónUtilice estas instrucciones para agregar de 16 y 8 bits de datos sin signo:El UADD16 instrucción:1. añade cada media palabra de la primera operando a la media palabra correspondiente del segundo operando.2. escribe el resultado no firmado en las medias palabras correspondientes del registro de destino.El UADD16 instrucción:

1. añade cada byte de la primera operando en el byte correspondiente del segundo operando.2. escribe el resultado sin firmar en el byte correspondiente del registro de destino.UASX y USAXSintaxisop { cond } { Rd }, Rn , RmOperaciónEl UASX instrucción:1. Resta la parte superior de la media palabra segundo operando de la media palabra inferior del primer operando.2. Escribe el resultado sin signo de la resta de la media palabra inferior del registro de destino.3. Añade la media palabra parte superior de la primera operando con la media palabra inferior del segundo operando.4. Escribe el resultado sin signo de la adición a la media palabra superior del registro de destino.El USAX instrucción:1. Añade la media palabra inferior del primer operando con la media palabra la parte superior del segundo operando.2. escribe el resultado sin signo de la adición a la parte inferior de la media palabra de registro de destino.3. Resta la media palabra inferior del segundo operando de la media palabra parte superior de la primera operando.4. Escribe el resultado sin signo de la resta de la media palabra superior del registro de destino.UHADD16 y UHADD8Sintaxisop { cond } { Rd ,} Rn , RmOperaciónUtilice estas instrucciones para agregar datos de 16 y 8 bits y luego reducir a la mitad el resultado antes de escribir el resultadopara el registro de destino:El UHADD16 instrucción:1. Añade cada media palabra de la primera operando a la media palabra correspondiente del segundo operando.2. baraja el resultado media palabra por un bit hacia la derecha, reducir a la mitad los datos.3. Escribe los resultados sin firmar a la media palabra correspondiente en el registro de destino.El UHADD8 instrucción:

1. Añade cada byte de la primera operando en el byte correspondiente del segundo operando.2. baraja el resultado byte por un bit hacia la derecha, reducir a la mitad los datos.3. Escribe los resultados sin firmar en el byte correspondiente en el registro de destino.UHASX y UHSAXSintaxisop { cond } { Rd }, Rn , RmOperaciónEl UHASX instrucción:1. Añade la media palabra parte superior de la primera operando con la media palabra inferior del segundo operando.2. Desplaza el resultado por un bit hacia la derecha provocando una división por dos, o la mitad.3. Escribe el resultado de la media palabra, además de la media palabra superior del registro de destino.4. Resta la parte superior de la media palabra segundo operando de la HighWord parte inferior del primer operando.5. Desplaza el resultado por un bit hacia la derecha provocando una división por dos, o la mitad.6. Escribe el resultado media palabra de la división en la parte inferior de la media palabra de registro de destino.El UHSAX instrucción:1. Resta la media palabra inferior del segundo operando de la HighWord parte superior de la primera operando.2. Desplaza el resultado por un bit hacia la derecha provocando una división por dos, o la mitad.3. Escribe el resultado de la resta media palabra en la parte superior de la media palabra de registro de destino.SELSeleccione Bytes. Selecciona cada byte de su resultado, ya sea su primer operando o su segundo operando,SintaxisSEL {<c>} {<q>} {<Rd>,} <Rn>, <Rm>OperaciónEl SEL instrucción:1. Lee el valor de cada bit de APSR.GE.2. En función del valor de APSR.GE, asigna el destino registrar el valor de cualquiera de los primero o segundo registro operando.USADA8Suma sin signo de las diferencias absolutas y se acumulan.

SintaxisUSADA8 { cond } { Rd ,} Rn , Rm , Ra

USUB16 y USUB8Reste Unsigned 16 y Restar Unsigned 8.Sintaxisop { cond } { Rd ,} Rn , Rm

Multiplicar y dividir Instrucciones

MUL, MLA, y MLSMultiplicar, Multiplicar con Acumula, y se multiplican con Reste, utilizando operandos de 32 bits, y la producción de un resultado de 32 bits.

SintaxisMUL {S} { cond } { Rd ,} Rn , Rm ; MultiplicarMLA { cond } Rd , Rn , Rm , Ra ; Multiplique con acumulanMLS { cond } Rd , Rn , Rm , Ra ; Multiplique con resteOperaciónEl MUL instrucción multiplica los valores de Rn y Rm , y coloca los menos significativos 32 bits

del resultado en Rd .El MLA instrucción multiplica los valores de Rn y Rm , añade el valor de Ra , y coloca elmenos significativos 32 bits del resultado en Rd .La MLS instrucción multiplica los valores de Rn y Rm , resta el producto de Ra , y lugareslos menos significativos 32 bits del resultado en Rd .Los resultados de estas instrucciones no dependen de si los operandos son firmados o sin firmar.SMLA y SMLAWFirmado y multiplicaciones (medias palabras).Sintaxisop { X } { Y } { cond } Rd , Rn , Rmop { Y } { cond } Rd , Rn , Rm , RaOperaciónEl SMALBB , SMLABT , SMLATB , SMLATT instrucciones:SMLADSintaxisSMLAD { X } { cond } Rd , Rn , Rm , Ra ;OperaciónLos SMLAD y SMLADX instrucciones consideran los dos operandos como cuatro valores media palabra de 16 bits. LaSMLAD y SMLADX instrucciones:SMLAL y SMLALDFirmado y multiplicaciones largo y Firmado Multiplicar Acumula doble largo y Firmado MultiplicarSintaxisSMLAL { cond } RDLO , RdHi , Rn , RmSMLAL {X} {Y} { cond } RDLO , RdHi , Rn , RmSMLALD { X } { cond } RDLO , RdHi , Rn , RmSMLSD y SMLSLDFirmado Multiplicar Reste Dual y Firmado Multiplicar Reste Dual largo.Sintaxisop { X } { cond } Rd , Rn , Rm , RaOperaciónEl SMLSD instrucción interpreta los valores de la primera y segunda operandos como cuatro firmados medias palabras. Esta instrucción:

SMMLA y SMMLSFirmado más significativo Palabra y multiplicaciones y firmado más significativo Palabra Multiplicar

Sintaxisop { R } { cond } Rd , Rn , Rm , RaOperaciónEl SMMLA instrucción interpreta los valores de Rn y Rm como firmados palabras de 32 bits.SMMULFirmado más significativo Palabra Multiplicar.Sintaxisop { R } { cond } Rd , Rn , RmOperaciónEl SMMUL instrucción interpreta los valores de Rn y Rm como complemento de 32 bits de dos firmado números enteros. El SMMUL instrucción:SMUAD y SMUSDFirmado Dual Multiplicar Añadir y firmado Dual Multiplicar Reste.Sintaxisop {X} { cond } Rd , Rn , RmOperaciónEl SMUAD instrucción interpreta los valores de la primera y segunda operandos como dos firmadosmedias palabras en cada operando. Esta instrucción: Opcionalmente gira las medias palabras de segundo operando. Realiza dos firmaron 16 × multiplicaciones de 16 bits. Añade los dos resultados de multiplicar juntos. escribe el resultado de la adición al registro de destino.El SMUSD instrucción interpreta los valores del primer y segundo operandos como complemento a dos enteros con signo. Esta instrucción:Smul y SMULWFirmado Multiply (medias palabras) y Firmado Multiplique (palabra por media palabra).SintaxisSmul { X } { Y } { cond } Rd , Rn , RmSMULW { Y } { cond } Rd . Rn , RmPara SMULXY solamente:Op es uno de:Smul { X } { Y } Firmado Multiplicar (medias palabras)X y Y especifican qué media palabra de la fuente registra Rn y Rm se utiliza como la primera y segunda operando multiplican. Si X es B , entonces la media palabra abajo, los bits: [15 0] de Rn se utiliza. Si X es T , entonces el superior media palabra, los bits [31:16] de Rn es used.If Y es B , entonces la media palabra abajo, los bits [15: 0],

de Rm es utilizado. Si Y es T , entonces la media palabra superior, bits [31:16], de Rm se utiliza.SMULW {Y} Firmado Multiplique (palabra por media palabra)Y especifica que media palabra de la fuente de registro Rm se utiliza como el segundo operando se multiplican. SiY es B , entonces la media palabra inferior (bits [15: 0]) de Rm se utiliza. Si Y es T , entonces la parte superior media palabra (bits[31:16]) de Rm se utiliza.Cond es un código de condición opcional.Rn, Rm son los registros de retención primero y segundo operandos.OperaciónLos SMULBB , SMULTB , SMULBT y SMULTT instrucciones interpreta los valores de Rn y Rm como cuatro firmaron enteros de 16 bits. 

UMULL, UMAAL, UMLAL, Smull y SMLALCon y sin signo de Long Multiplicar, con Acumula opcional, utilizando operandos de 32 bits y producir un resultado de 64 bits.UMAAL UMULL, UMLAL, Smull, SMLALSintaxis{ cond } RDLO , RdHi , Rn , RmOperaciónEl UMULL instrucción interpreta los valores de Rn y Rm como enteros sin signo. Multiplica estos enteros y lugares los menos significativos de 32 bits del resultado en RDLO , y el más significativo 32 bits del resultado en RdHi .El UMAAL instrucción interpreta los valores de Rn y Rm como enteros sin signo. Se multiplica la dos enteros sin signo en el primer y segundo operandos y añade el entero sin signo de 32 bits en RdHi con el resultado de 64 bits de la multiplicación. Añade el entero sin signo de 32 bits en RDLO a la de 64 bits resultado de la suma, escribe los mejores 32 bits del resultado a RdHi , y escribe los 32 bits inferiores de  RDLO .

SDIV y UDIVFirmado dividiendo más y sin signo.SintaxisSDIV { cond } { Rd ,} Rn , RmUDIV { cond } { Rd ,} Rn, RmDónde:Cond Es un código de condición opcional. Rd Es el registro de destino. Si Rd se omite, el registro destino es Rn .Rn Es el registro que contiene el valor que desea dividir.Rm Es un registro que sostiene el divisor.

OperaciónSDIV realiza una división entera firmada del valor en Rn por el valor de Rm .UDIV realiza una división entera sin signo del valor en Rn por el valor de Rm .Para ambas instrucciones, si el valor de Rn no es divisible por el valor de Rm , el resultado se redondea hacia cero.

RestriccionesNo utilice SP y no utilice PC.

Indicadores de condiciónEstas instrucciones no cambian las banderas.

EjemplosSDIV R0, R2, R4; Firmado brecha, R0 = R2 / R4.UDIV R8, R8, R1; Brecha sin signo, R8 = R8 / R1.