Professional Documents
Culture Documents
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
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.
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.
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
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:
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
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