Multiplicação


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

Descrição: Multiplica os operandos e armazena o resultado no registrador de destino especificado.
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