Está en la página 1de 31

Resumen captulos 1, 2, 3, 4 de

Cortex-M3-M4F Instruction Set.


Resumen del conjunto de instrucciones
El procesador implementa una versin del conjunto de instrucciones T1.1
Los parntesis 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 mayora de las instrucciones puede utilizar un sufijo cdigo de condicin
opcional.

Operando
Un operando de la instruccin puede ser un Cortex-M3 / M4F registro ARM, una
constante, u otra instruccin especfica de parmetros. Instrucciones actan sobre los
operandos y suelen almacenar el resultado en un registro de destino.
Restricciones al utilizar el PC o SP
Muchas 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 direccin que usted escribe al PC con un BX,
BLX,LDM,LDR, o instruccin POPdebe ser 1 para la ejecucin correcta, porque
este bit indica el conjunto de instrucciones se requiere, y el procesador Cortex-M3 /
M4F slo admite instrucciones Thumb.
Flexible segundo operando
Muchas instrucciones generales de procesamiento de datos tienen un segundo
operando flexible. Esto se muestra como
Operand2 en las descripciones de la sintaxis de cada instruccin.
Operand2 puede ser una constante o un registro con desplazamiento opcional.
Constante
Se especifica una constante Operand2 en la forma:
# Constante donde puede ser constante(X e Y son dgitos hexadecimales):
Cualquier constante que puede ser producida desplazando un valor de 8 bits a la
izquierda por cualquier nmero de bits dentro de una
Palabra 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 oTST,labanderadeacarreoseactualizaapoco[31]delaconstante,sila
constanteesmayorque255 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 podra ser capaz de producir una instruccin equivalente en los casos
en que se especifica un
constante que no est permitido. Por ejemplo, un ensamblador puede ensamblar la
instruccin CMP Rd,
# 0xFFFFFFFE como la instruccin equivalente CMN Rd, # 0x2.
Registro con cambio opcional
Se 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 # n
Desplazamiento aritmetico a la derecha n bits, 1 n 32.
LSL # n
Desplazamiento lgico a la izquierda n bits, 1 n 31.
LSR # n
Desplazamiento lgico a la derecha n bits, 1 n 32.
ROR # n
Rotar a la derecha n , 1 n 31.
RRX
Rota a la derecha un bit, con extend.
Si se omite, LSL # 0.
Operaciones de desplazamiento
Inscripcin operaciones de desplazamiento se mueven los bits en un registro a la
izquierda oa la derecha de un nmero 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 clculo de Operand2 por las instrucciones que especifican el segundo
operando como se registra en el cambio. El resultado es utilizado por la instruccin.
Alineacin de Direccin
Un acceso alineado es una operacin donde se utiliza una direccin de palabra
alineados para una palabra, palabra doble, o el acceso de varias palabras, o cuando
una direccin media palabra alineados se utiliza para un acceso media palabra. Byte

Accesos siempre estn alineados. Los procesadores Cortex-M3 / M4f apoyar el acceso
no alineado slo para las siguientes instrucciones:
1. LDR , TRV
2. LDRH , LDRHT
3. LDRSH , LDRSHT
4. STR , STRT
5. STRH , STRHT
El resto de las instrucciones de carga y almacenamiento generan una excepcin error
si no se encuentran alineados
Expresiones en PC Relativa
Una expresin de PC pariente o etiqueta es un smbolo que representa la direccin de
una instruccin o literal datos. Se representa en la instruccin como el PC, ms o
menos un valor numrico offset. El ensamblador Calcula el desplazamiento necesario
de la etiqueta y la direccin de la instruccin actual. Si el desplazamiento
es demasiado grande, el ensamblador produce un error.
Nota:
Para B , BL , CBNZ y CBZ instrucciones, el valor de la PC es la direccin de la
instruccin actual ms 4 bytes.
Para todas las dems instrucciones que utilizan etiquetas, el valor de la PC es la
direccin actual.
Ejecucin condicional
La mayora de las instrucciones de procesamiento de datos se pueden actualizar
opcionalmente los indicadores de condicin en la aplicacin Estado del Programa
de Registro (APSR) registrar de acuerdo con el resultado de la operacin.
Puede ejecutar una instruccin condicional, en base a los indicadores de condicin
establecidos en otra instruccin, ya sea inmediatamente despus de la instruccin que
actualiza las banderas, o despus de cualquier nmero de intervenir Instrucciones que
no han actualizado las banderas.
Indicadores de condicin
El Estado del Programa de Aplicacin Registro (APSR) contiene los siguientes
indicadores de condicin:
N. establece en 1 cuando el resultado de la operacin fue negativo; despejado a 0 en
caso contrario.
Z. Se establece en 1 cuando el resultado de la operacin fue de cero; despejado a 0 en
caso contrario.
C. Puesto a 1 cuando la operacin se sald con un acarreo; despejado a 0 en caso
contrario.

V. Se establece en 1 cuando la operacin caus el desbordamiento; despejado a 0 en


caso contrario.
Un acarreo se produce:
Si el resultado de una adicin es mayor que o igual a 232
Si el resultado de una resta es positivo o cero
Como resultado de una operacin de la palanca de cambios barril en lnea en un
movimiento o instruccin lgico.
Desbordamiento
se produce si el resultado de una operacin aadir, restar, o comparar es mayor o igual
a 231, O menos que -231.
Cdigo de condicin sufijos
Las instrucciones que pueden ser condicionales tienen un cdigo de condicin
opcional, que se muestra en las descripciones de sintaxis como { cond }. Ejecucin
condicional requiere un precedente TI instruccin. Una instruccin con una condicin
slo se ejecuta si las banderas de condicin en APSR cumplen la condicin
especificada.

Ejemplo 1-1. Valor Absoluto


MOVS R0, R1;
R0 = R1, el establecimiento de las banderas.
IT
MI ;
Instruccin de TI para la condicin 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 banderas
ITT GT;
Instruccin de TI para las dos condiciones GT
CMPGT R2, R3 ; Si "mayor que", comparar R2 y R3, el establecimiento de las
banderas
MOVGT R4, R5; Si an "mayor que", hacer R4 = R5
Ancho Instruccin Seleccin
Hay muchas instrucciones que pueden generar o bien una codificacin de 16 bits o
una codificacin de 32 bits dependiendo en los operandos y registro de destino
especificados. Para algunas de estas instrucciones, puede forzar una tamao de la
instruccin especfica mediante un sufijo ancho de instrucciones. El .W sufijo obliga a
una instruccin de 32 bits codificacin. El .N sufijo obliga a una codificacin de
instruccin de 16 bits.
Ejemplo 1-3. Ancho Instruccin Seleccin
BCS.W Etiqueta;
crea una instruccin de 32 bits incluso para una rama corta
ADDS.W R0, R0, R1; crea una instruccin de 32 bits aunque el mismo
; operacin se puede hacer por una instruccin de 16 bits
Instrucciones de acceso de memoria

ADR
Generar direccin-PC relativa.
Sintaxis
ADR { cond } Rd , etiqueta
Dnde:
Cond
Es un cdigo de condicin opcional.
Rd
Es el registro de destino.
Etiqueta Es una expresin de PC relativa.
Operacin
ADR determinaladireccinmediantelaadicindeunvalorinmediatoalaPC,y
escribeelresultadodelregistro de destino.
Restricciones
Rd nodebeserSPynodebeserPC.
Ejemplos
ADR
R1, TextMessage; Valor de la direccin de escritura de una ubicacin marcada como
; TextMessage a R1.
LDR y STR (inmediata Offset)
Cargar y tienda con inmediata offset, pre-indexados compensado inmediata, o postindexados inmediata

dond
e:
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 cdigo de condicin opcional.
Rt
Es el registro para cargar o almacenar.
Rn Es el registro en el que se basa la direccin de memoria.
Offset Es un desplazamiento de Rn . Si desplazamiento se omite, la direccin es
el contenido de Rn .
Rt2
Es el registro adicional para cargar o almacenar para las operaciones de dos
palabras.
Restricciones
Para obtener instrucciones de carga:
1. Rt puede ser SP o PC slo 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 instruccin de carga palabra:
5. Bit [0] del valor cargado debe ser 1 para la ejecucin correcta.
6. Una rama se produce a la direccin creada cambiando poco [0] del valor
cargado a 0.
7. Si la instruccin es condicional, debe ser la ltima instruccin en la TI bloque.
8. Para almacenar instrucciones:
9. Rt puede ser SP slo 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 condicin
Estas instrucciones no cambian las banderas.
Ejemplos

LDR y STR (Registrar Offset)


Sintaxis
op { tipo } { cond } Rt , [ Rn , Rm {, LSL # n }]
Dnde:
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 cdigo de condicin opcional.
Rt
Es el registro para cargar o almacenar.
Rn
Es el registro en el que se basa la direccin 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.
Operacin
LDR operacionescarganunregistroconunvalordelamemoria.
STR instruccionesalmacenanunvalorderegistroenlamemoria.
La direccin 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 .
Restricciones
En estas instrucciones:
1. Rn no debe ser PC .
2. Rm no debe ser SP y no debe ser PC .
3. Rt puede ser SP slo para cargas de palabras y tiendas de palabras.
4. Rt puede ser PC slo para cargas de palabras.
5. Cuando Rt es PC en una instruccin de carga palabra:
6. Bit [0] del valor cargado debe ser 1 para la ejecucin correcta, y una rama se
produce a esta
7. direccin media palabra-alineado.
8. Si la instruccin es condicional, debe ser la ltima instruccin en la TI bloque.

LDR y STR (acceso sin privilegios)


Sintaxis
op { tipo } T { cond } Rt , [ Rn {, # compensado }] ; compensado inmediata
Dnde:
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 cdigo de condicin opcional
Rt
Es el registro para cargar o almacenar.
Rn
Es el registro en el que se basa la direccin de memoria.
Offset Es un desplazamiento desde Rn y puede ser de 0 a 255.
Si desplazamiento se omite, la direccin es el valor en Rn .
Operacin
Estas instrucciones de carga y almacenamiento realizan la misma funcin que las
instrucciones de acceso a memoria con compensacin La diferencia es que estas
instrucciones slo 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 normales
Instrucciones de acceso a memoria con compensacin inmediata.
Operacin
LDR cargaunregistroconunvalordeunadireccindememoriaPCrelativa.La
direccindememoriaesespecificado 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 palabras
o bien se puede con o sin signo
Operacin
LDREX , LDREXB y LDREXH carganunapalabra,byte,ymediapalabra,
respectivamente,deunadireccindememoria.
STREX , STREXB y STREXH intentaalmacenarunapalabra,byte,ymediapalabra,
respectivamente,aunamemoriadireccin. La direccin utilizada en cualquier
instruccin-Store exclusivo debe ser la misma que la direccin en

la instruccin de carga exclusiva ejecutado ms recientemente. El valor almacenado


por la tienda-Exclusiva instruccin tambin debe tener el mismo tamao de los datos
como el valor cargado por el anterior Load-exclusiva
Importante: El resultado de la ejecucin de una instruccin-Store exclusivo a una
direccin que es diferente de
la utilizada en la instruccin de carga Exclusivo anterior es impredecible.
Instrucciones de procesamiento de datos generales

ADD, ADC, SUB, SBC, y RSB


Aadir, Aadir con equipaje, Restar, Restar con equipaje, y Restar inversa.
op {S} { cond } { Rd ,} Rn , Operand2
op { cond } { Rd ,} Rn , # imm12
; ADD y slo SUB
Dnde:
Op Es uno de:
AADIR Agregar.
ADC Aadir con Carry.
SUB Resta.
SBC Restar con Carry.
RSB Reste la inversa.
S
Es un sufijo opcional. Si se especifica S, las banderas de cdigo de condicin se
actualizan en el resultado de la
Operacin
El ADD instruccin suma el valor de Operand2 o imm12 al valor en Rn .
El ADC instruccin suma los valores de Rn y Operand2 , junto con la bandera de
acarreo.
El SUB instruccin resta el valor de Operand2 o imm12 del valor en Rn .
El SBC instruccin resta el valor de Operand2 del valor en Rn . Si la bandera de
acarreo es clara,
el resultado se reduce en uno.
El RSB instruccin resta el valor de Rn a partir del valor de Operand2 . Esto es til
porque
de la amplia gama de opciones para Operand2 .
Uso ADC y SBC para sintetizar aritmtica multiword.
Nota: ADDW es equivalente a la ADD sintaxis que utiliza el imm12 operando. SUBW es
equivalente a
el SUB sintaxis que utiliza el imm12 operando.
Indicadores de condicin
Si se especifica S, estas instrucciones de actualizacin las N , Z , C y V banderas de
acuerdo con el resultado.
Ejemplos
ADD R2, R1, R3
SUB R8, R6, # 240; Establece las banderas en el resultado.
RSB R4, R4, # 1280 ; Resta contenido de R4 de 1280.
ADCHI R11, R0, R3 ; Slo ejecuta si C bandera ajustado y Z
; bandera clara.

Ejemplo. La adicin de 64 Bit


ADDS R4, R0, R2 ; Aadir las palabras menos significativos.
ADC R5, R1, R3 ; Aadir las palabras ms significativas con equipaje.
Indicadores de condicin
Si se especifica S, estas instrucciones:
Actualizar el N y Z banderas de acuerdo con el resultado.
Puede actualizar el C bandera durante el clculo de Operand2 .
Ejemplos
Y R9, R2, # 0xFF00
ORREQ R2, R0, R5
ANDS R9, R8, # 0x19
EORs R7, R11, # 0x18181818
BIC R0, R1, # 0xab
ORN R7, R11, R14, ROR # 4
ORNs R7, R11, R14, ASR # 3259
ASR, LSL, LSR, ROR, y RRX
Shift Aritmtica Derecho, desplazamiento lgico Izquierda, Derecha Desplazamiento
Lgico, Girar a la derecha y Rotar a la derecha con Extender.
Sintaxis
op {S} { cond } Rd , Rm , Rs
op {S} { cond } Rd , Rm , # n
RRX {S} { cond } Rd , Rm
Donde:
Op Es uno de:
ASR Shift Aritmtica Derecho.
LSL Shift izquierdo lgico.
LSR Desplazamiento lgico Derecho.
ROR Girar a la derecha.
S
Es un sufijo opcional. Si se especifica S, las banderas de cdigo de condicin se
actualizan en el resultado de la operacin.
CLZ
Sintaxis
CLZ { cond } Rd , Rm
Dnde:
Cond Es un cdigo de condicin opcional.
Rd Es el registro de destino.

Rm

Es el registro de operando.

Operacin
El CLZ instruccin cuenta el nmero de ceros a la izquierda en el valor de Rm y
devuelve el resultado en
Rd . 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 CMN
Sintaxis
CMP { cond } Rn , Operand2
CMN { cond } Rn , Operand2
Dnde:
Cond Es un cdigo de condicin opcional.
Rn Es el registro de retencin del primer operando.
Operand2 Es un segundo operando flexible.
Operacin
Estas instrucciones comparan el valor en un registro con Operand2 . Se ponen al da
los indicadores de condicin en el resultado, pero no grabar el resultado en un
registro.
El CMP instruccin resta el valor de Operand2 del valor en Rn . Esto es lo mismo
que una
SUBS instruccin,exceptoqueelresultadosedescarta.
El CMN instruccin suma el valor de Operand2 al valor en Rn . Esto es lo mismo que
un ADDSinstruccin, excepto que el resultado se descarta.
MOV y MVN
MOV {S} { cond } Rd , Operand2
MOV { cond } Rd , # imm16
MVN {S} { cond } Rd , Operand2
Dnde:
S Es un sufijo opcional. Si se especifica S, las banderas de cdigo de condicin se
actualizan en el resultado de la operacin.
Sintaxis orientar la operacin de desplazamiento
Instruccin MOV
ASR {S} {cond} Rd, Rm, #n
MOV {S} {cond} Rd, Rm, #n ASR
LSL {S} {cond} Rd, Rm, #n
MOV {S} {cond} Rd, Rm, LSL #n (sin!=0)
LSR {S} {cond} Rd, Rm, #n
MOV {S} {cond} Rd, Rm, LSR #n
ROR {S} {cond} Rd, Rm, #n
MOV {S} {cond} Rd, Rm, ROR #n

RRX {S} {cond} Rd, Rm


MOV {S} {cond} Rd, Rm, RRX
Adems, el MOV instruccin permite otras formas de Operand2 como sinnimos de
instrucciones de desplazamiento.
Sinnimo Instruccin MOV
Instruccin Shift
MOV {S} {cond} Rd, RM, LSL Rs
LSL {S} {cond} Rd, Rm, RS
MOV {S} {cond} Rd, RM, LSR Rs
LSR {S} {cond} Rd, Rm, RS
MOV {S} {cond} Rd, RM, ROR Rs
ROR {S} {cond} Rd, Rm, RS
El MVN instruccin toma el valor de Operand2 , realiza una funcin lgica NO
operacin en la valor, y coloca el resultado en Rd .
Nota: El MOVW de instrucciones proporciona la misma funcin que MOV , pero se
limita a la utilizacin de la imm16
Ejemplo
MOVS 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 actualizacin.
Sintaxis
MOVT { cond } Rd , # imm16
Operacin
MOVT escribeun16bitdevalorinmediato,imm16,alamediapalabrasuperior,Rd
[31:16],desudestinoregistrarse. La escritura no afecta Rd [15: 0].
El MOV, MOVT par de instrucciones permite generar cualquier constante de 32 bits.
SADD16 y SADD8
Sintaxis
op { cond } { Rd ,} Rn , Rm
Operacin
Utilice estas instrucciones para realizar una media palabra o byte agregar en paralelo:
El SADD16 instruccin:

1. Aade 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 instruccin:
1. Aade 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 condicin
Estas instrucciones no cambian las banderas.
Ejemplos
SADD16 R1, R0
; Aade las medias palabras de R0 a las medias palabras correspondientes de
; R1 y escribe a media palabra de R1 correspondiente.
SADD8 R4, R0, R5; Aade bytes de R0 para el byte correspondiente en R5 y
escrituras
; para el byte correspondiente en R4.
SHADD16 y SHADD8
Sintaxis
op { cond } { Rd ,} Rn , Rm
Operacin
Utilice 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 instruccin:
1. Aade 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 instruccin:
1. Aade 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 SHSAX
Firmado Reducir a la mitad sumar y restar con Exchange y firmado Reducir a la mitad
y Restar Aadir con
op { cond } { Rd }, Rn , Rm
Operacin
El SHASX instruccin:

1. Aade 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, adems de la media palabra superior del
registro de destino, desplazado
por un bit hacia la derecha provocando una divisin 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 divisin en la parte inferior de la media
palabra de registro de destino, desplazado por un bit hacia la derecha provocando una
divisin por dos, o la mitad.
El SHSAX instruccin:
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 Adems de la parte inferior de la media
palabra de registro de destino, desplazado por un bit hacia la derecha provocando una
divisin por dos, o la mitad.
3. Aade la media palabra inferior del primer operando con la media palabra la parte
superior del segundo operando.
SHSUB16 y SHSUB8
Sintaxis
op { cond } { Rd ,} Rn , Rm
Operacin
Utilice 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 instruccin:
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 instruccin:
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 SSUB8
Sintaxis
op { cond } { Rd ,} Rn , Rm
Operacin
Utilice estas instrucciones para cambiar endianness de datos:
El SSUB16 instruccin:

1. Resta cada media palabra desde el segundo operando de la media palabra


correspondiente de la primer operando
2. Escribe el resultado diferencia de dos medias palabras firmados en la media palabra
correspondiente de la registro de destino.
El SSUB8 instruccin:
1. Resta cada byte de la segunda operando desde el byte correspondiente del primer
operando
2. Escribe el resultado diferencia de cuatro bytes firmados en el byte correspondiente
del destino registrarse.
SASX y SSax
Sintaxis
op { cond } { Rd }, Rm , Rn
op { cond } { Rd }, Rm , Rn
Operacin
El SASX instruccin:
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 adicin 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 de
el primer operando.
4. Escribe el resultado con signo de la resta de la media palabra inferior del registro de
destino.
El SSax instruccin:
1. Resta el media palabra inferior firmada del segundo operando desde la parte
superior HighWord firmado de
el primer operando.
2. Escribe el resultado con signo de la adicin a la media palabra inferior del registro
de destino.
TST y EQT
Sintaxis
TST { cond } Rn , Operand2
EQT { cond } Rn , Operand2
Operacin
Estas instrucciones de la prueba el valor en un registro contra Operand2 . Se ponen al
da los indicadores de condicin basado en el resultado, pero no escribir el resultado
en un registro.
El TST instruccin realiza una operacin AND bit a bit en el valor de Rn y el valor
de Operand2 .
Este es el mismo que el ANDS instruccin, excepto que descarta el resultado.

UADD16 y UADD8
Sintaxis
op { cond } { Rd ,} Rn , Rm
Operacin
Utilice estas instrucciones para agregar de 16 y 8 bits de datos sin signo:
El UADD16 instruccin:
1. aade 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 instruccin:
1. aade 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 USAX
Sintaxis
op { cond } { Rd }, Rn , Rm
Operacin
El UASX instruccin:
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. Aade 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 adicin a la media palabra superior del registro
de destino.
El USAX instruccin:
1. Aade 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 adicin 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 UHADD8
Sintaxis
op { cond } { Rd ,} Rn , Rm
Operacin

Utilice estas instrucciones para agregar datos de 16 y 8 bits y luego reducir a la mitad
el resultado antes de escribir el resultado
para el registro de destino:
El UHADD16 instruccin:
1. Aade 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 instruccin:
1. Aade 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 UHSAX
Sintaxis
op { cond } { Rd }, Rn , Rm
Operacin
El UHASX instruccin:
1. Aade 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 divisin por dos,
o la mitad.
3. Escribe el resultado de la media palabra, adems 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 divisin por dos,
o la mitad.
6. Escribe el resultado media palabra de la divisin en la parte inferior de la media
palabra de registro de destino.
El UHSAX instruccin:
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 divisin 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.
SEL

Seleccione Bytes. Selecciona cada byte de su resultado, ya sea su primer operando o


su segundo operando,
Sintaxis
SEL {<c>} {<q>} {<Rd>,} <Rn>, <Rm>
Operacin
El SEL instruccin:
1. Lee el valor de cada bit de APSR.GE.
2. En funcin del valor de APSR.GE, asigna el destino registrar el valor de cualquiera
de los primero o segundo registro operando.
USADA8
Suma sin signo de las diferencias absolutas y se acumulan.
Sintaxis
USADA8 { cond } { Rd ,} Rn , Rm , Ra
USUB16 y USUB8
Reste Unsigned 16 y Restar Unsigned 8.
Sintaxis
op { cond } { Rd ,} Rn , Rm
Multiplicar y dividir Instrucciones

MUL, MLA, y MLS


Multiplicar, Multiplicar con Acumula, y se multiplican con Reste, utilizando
operandos de 32 bits, y la produccin de un resultado de 32 bits.
Sintaxis
MUL {S} { cond } { Rd ,} Rn , Rm ; Multiplicar
MLA { cond } Rd , Rn , Rm , Ra ; Multiplique con acumulan
MLS { cond } Rd , Rn , Rm , Ra ; Multiplique con reste
Operacin
El MUL instruccin multiplica los valores de Rn y Rm , y coloca los menos
significativos 32 bits
del resultado en Rd .
El MLA instruccin multiplica los valores de Rn y Rm , aade el valor de Ra , y coloca
el
menos significativos 32 bits del resultado en Rd .
La MLS instruccin multiplica los valores de Rn y Rm , resta el producto de Ra , y
lugares
los 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 SMLAW
Firmado y multiplicaciones (medias palabras).
Sintaxis
op { X } { Y } { cond } Rd , Rn , Rm
op { Y } { cond } Rd , Rn , Rm , Ra
Operacin
El SMALBB , SMLABT , SMLATB , SMLATT instrucciones:
SMLAD
Sintaxis
SMLAD { X } { cond } Rd , Rn , Rm , Ra ;
Operacin
Los SMLAD y SMLADX instrucciones consideran los dos operandos como cuatro
valores media palabra de 16 bits. La
SMLAD y SMLADX instrucciones:
SMLAL y SMLALD
Firmado y multiplicaciones largo y Firmado Multiplicar Acumula doble largo y
Firmado Multiplicar
Sintaxis
SMLAL { cond } RDLO , RdHi , Rn , Rm
SMLAL {X} {Y} { cond } RDLO , RdHi , Rn , Rm
SMLALD { X } { cond } RDLO , RdHi , Rn , Rm

SMLSD y SMLSLD
Firmado Multiplicar Reste Dual y Firmado Multiplicar Reste Dual largo.
Sintaxis
op { X } { cond } Rd , Rn , Rm , Ra
Operacin
El SMLSD instruccin interpreta los valores de la primera y segunda operandos como
cuatro firmados medias palabras. Esta instruccin:
SMMLA y SMMLS
Firmado ms significativo Palabra y multiplicaciones y firmado ms significativo
Palabra Multiplicar
Sintaxis
op { R } { cond } Rd , Rn , Rm , Ra
Operacin
El SMMLA instruccin interpreta los valores de Rn y Rm como firmados palabras de
32 bits.
SMMUL
Firmado ms significativo Palabra Multiplicar.
Sintaxis
op { R } { cond } Rd , Rn , Rm
Operacin
El SMMUL instruccin interpreta los valores de Rn y Rm como complemento de 32
bits de dos firmado nmeros enteros. El SMMUL instruccin:
SMUAD y SMUSD
Firmado Dual Multiplicar Aadir y firmado Dual Multiplicar Reste.
Sintaxis
op {X} { cond } Rd , Rn , Rm
Operacin
El SMUAD instruccin interpreta los valores de la primera y segunda operandos como
dos firmados
medias palabras en cada operando. Esta instruccin:
Opcionalmente gira las medias palabras de segundo operando.
Realiza dos firmaron 16 multiplicaciones de 16 bits.
Aade los dos resultados de multiplicar juntos.
escribe el resultado de la adicin al registro de destino.
El SMUSD instruccin interpreta los valores del primer y segundo operandos como
complemento a dos enteros con signo. Esta instruccin:
Smul y SMULW
Firmado Multiply (medias palabras) y Firmado Multiplique (palabra por media
palabra).
Sintaxis

Smul { X } { Y } { cond } Rd , Rn , Rm
SMULW { Y } { cond } Rd . Rn , Rm
Para SMULXY solamente:
Op es uno de:
Smul { X } { Y } Firmado Multiplicar (medias palabras)
X yY especificanqumediapalabradelafuenteregistraRn yRm seutilizacomola
primeraysegundaoperando 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. Si
Y es B ,entonceslamediapalabrainferior(bits[15:0])deRm seutiliza.SiY es T ,
entonceslapartesuperiormediapalabra(bits
[31:16]) de Rm se utiliza.
Cond es un cdigo de condicin opcional.
Rn, Rm son los registros de retencin primero y segundo operandos.
Operacin
Los 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 SMLAL
Con 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, SMLAL
Sintaxis
{ cond } RDLO , RdHi , Rn , Rm
Operacin
El UMULL instruccin 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 ms significativo 32 bits del resultado en RdHi .
El UMAAL instruccin 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 aade el entero
sin signo de 32 bits en RdHi con el resultado de 64 bits de la multiplicacin. Aade 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 UDIV

Firmado dividiendo ms y sin signo.


Sintaxis
SDIV { cond } { Rd ,} Rn , Rm
UDIV { cond } { Rd ,} Rn, Rm
Dnde:
Cond Es un cdigo de condicin 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.
Operacin
SDIV realizaunadivisinenterafirmadadelvalorenRnporelvalordeRm.
UDIV realizaunadivisinenterasinsignodelvalorenRnporelvalordeRm.
Para ambas instrucciones, si el valor de Rn no es divisible por el valor de Rm , el
resultado se redondea hacia cero.
Restricciones
No utilice SP y no utilice PC.
Indicadores de condicin
Estas instrucciones no cambian las banderas.
Ejemplos
SDIV R0, R2, R4; Firmado brecha, R0 = R2 / R4.
UDIV R8, R8, R1; Brecha sin signo, R8 = R8 / R1.