São 8 instruções disponíveis a saber:
DIVS – Divisão com sinal
Descrição: Executa uma divisão com sinal entre os dois
registadores de 32 bits especificados. O quociente é retornado em
Rd, o restante em Rd +1. Não exceções são tomadas se dividir por
0. Resultado em Rd e Rd +1 são indefinidos quando houver uma divisão
por 0. O sinal do restante será o mesmo que o dividendo, e o
quociente será negativo se os sinais de Rx e Ry são opostas.
Operação:
I. Rd ← Rx / Ry;
Rd+1 ←
Rx % Ry;
Sintaxe:
I. divs Rd, Rx, Ry
Operandos:
I. d ∈ {0, 2, ..., 14} / {x, y} ∈ {0, 1, ..., 15}
DIVU – Divisão sem sinal
Descrição: Executa uma divisão sem sinal entre os dois
registadores de 32 bits especificados. O quociente é retornado em
Rd, o restante em Rd +1. Não exceções são tomadas se dividir por
0. Resultado em Rd e Rd +1 são indefinidos quando a divisão por 0.
Operação:
I.
Rd ← Rx / Ry;
Rd+1 ←
Rx % Ry;
Sintaxe:
I.
divu
Rd, Rx, Ry
Operandos:
I.
d ∈ {0, 2, ..., 14}
/ {x, y} ∈ {0, 1, ..., 15}
MAC – multiplicação e soma
Descrição:
Executa uma operação de multiplicação pelo registadores Rx e Ry e
soma e armazena o resultado no registrador de destino Rd.
Operação:
I.
Rd ← (Rx × Ry) + Rd;
Sintaxe:
I.
mac Rd, Rx, Ry
Operandos:
{d, x, y} ∈ {0, 1, ..., 15}
MACS.D – Multiplica e acumula sem sinal
Descrição: Executa uma operação de multiplicação e acumula um
número com sinal e armazena o resultado nos registradores destino.
Operação:
I. acc ← (Rd+1:Rd);
prod ←
(Rx × Ry);
res ←
prod + acc;
(Rd+1:Rd)
← res;
Sintaxe:
I. macs.d Rd, Rx, Ry
Operandos:
I.
d ∈ {0, 2, 4, ..., 14}
/ {x, y} ∈ {0, 1, ..., 15}
MACU.D – Multiplica e acumula sem sinal
Descrição: Executa uma operação de multiplicação e soma com
números sem sinal e armazena o resultado nos registradores de
destino.
Operação:
I. acc ← (Rd+1:Rd);
prod ←
(Rx × Ry);
res ←
prod + acc;
(Rd+1:Rd)
← res;
Sintaxe:
I.
macu.d Rd, Rx, Ry
Operandos:
I.
d ∈ {0, 2, 4, ..., 14}
/ {x, y} ∈ {0, 1, ..., 15}
MUL – Multipicação
Operação:
I.
Rd ← Rd × Rs;
II.
Rd ←
Rx × Ry;
III.
Rd
← Rs × SE(imm8)
Sintaxe:
I.
mul
II.
mul
III.
mul
Rd, Rs
Rd, Rx,
Ry
Rd, Rs,
imm
Operandos:
I. {d, s} ∈ {0, 1, ..., 15}
II.
{d,
x, y} ∈ {0, 1, ..., 15}
III.
{d,
s} ∈ {0, 1, ..., 15}
imm ∈
{-128, -127, ..., 127}
MULS.D – multiplica com sinal
Descrição: Multiplica os dois registradores especificados e
armazena o resultado no registrador destino.
Operação:
I.
Rd+1:Rd ← Rx × Ry;
Sintaxe:
I.
muls.d Rd, Rx, Ry
Operandos:
I.
d ∈ {0, 2, 4, ..., 14}
/ {x, y} ∈ {0, 1, ..., 15}
MULU.D – Multiplicação sem sinal
Descrição: Multiplica os dois registradores especificados e o
resultado é armazenado nos registradores destinos.
Operação:
I. Rd+1:Rd ← Rx × Ry;
Sintaxe:
I.
mulu.d Rd, Rx, Ry
Operandos:
I.
d ∈ {0, 2, 4, ..., 14}
/ {x, y} ∈ {0, 1, ..., 15}
Nenhum comentário:
Postar um comentário