Essa instrução SMLAL, multiplica dois operandos/valores sinalizados gerando um
resultado em 64-Bits. E esse resultado é adicionado a um valor 64-bits contido em outros
dois registradores gerando um valor final acumulado e armazenado nos registradores de destino.
Nessa instrução, a sinalização do operandos é mantida/estendida no resultado.
Sintaxe
SMLAL{<cond>}{<S>} RdLo, RdHi, Rm, Rs
Operação
temp64 <- (Rm * Rs)
RdLo, C <- (word)temp64 + RdLo
RdHi <- (temp64 >> 32) + RdHi + C
Endereçamento:
RdLo, RdHi, Rm, Rs
CPSR
N: a
Z: a
C: ?
V: -
Exemplo:
MOV R0, #02
MOV R1, #00
MOV R3, #02
MOV R2, #FFFFFFFF ;
MLA R0, R1, R2, R3
;temp64 = Rm*Rs = 1FFFFFFFE
;(word)temp64 : FFFFFFFE
;R1: 02
;R1 <- R1 + FFFFFFFE = 200000000
;C = 1
;R0: 0
;R0 <- R0 + (temp64 >> 32) + C