São 20 instruções disponíveis a saber:
ABS – Valor absoluto
Descrição: O valor absoluto do conteúdo do registrador
especificado é escrito de volta para o registrador. Se o valor
inicial for igual ao valor máximo negativo (0x80000000) o resultado
será igual ao valor inicial.
Operação:
I. Rd ← |Rd|;
Sintaxe:
I.
abs
Rd
Operandos:
I.
d ∈ {0, 1, ..., 15}
ACR – Adiciona transporte ao registrador
Descrição: Adiciona transporte ao registrador destino
especificado.
Operação:
I. Rd ← Rd + C;
I.
Sintaxe: acr Rd
Operandos:
I. d ∈ {0, 1, ..., 15}
ADC – Adiciona com transporte
Descrição: Adiciona o transporte e os dois registradores
especificados e armazena o resultado no registrador de destino.
Operação:
I.
Rd ← Rx + Ry + C;
Sintaxe:
I.
adc
Rd, Rx, Ry
Operandos:
I.
{d, x, y} ∈ {0, 1, ..., 15}
ACR –
Add Carry to Register
Description
Adds
carry to the specified destination register.
Descrição: Adiciona a bandeira transporte ao registo de destino
especificado.
Operação:
I. Rd ← Rd + C;
Sintaxe:
I. acr
Rd
Operandos:
I. d ∈ {0, 1, ..., 15}
ADD – Adiciona sem transporte
Descrição: Adiciona os dois registradores especificados e armazena
o resultado no registrador destino. Formato II permite deslocamento
do segundo operando.
Operação:
I. Rd ← Rd + Rs;
II.
Rd ←
Rx + (Ry<< sa2);
Sintaxe:
I.
add
Rd, Rs
II.
add
Rd, Rx, Ry << sa
Operandos:
I.
{d, s} ∈ {0, 1, ..., 15}
II.
{d,
x, y}∈ {0, 1, ..., 15}
/ sa ∈ {0, 1, 2, 3}
ADD{cond4} – Adiciona condicional
Descrição: Executa uma adição e armazena o resultado no
registrador destino.
Operação:
I. if ( cond4)
Rd ← Rx
+ Ry;
Sintaxe:
I. add{cond4}Rd, Rx, Ry
Operandos:
I. {d, x, y} ∈ {0, 1, ..., 15}
/ cond4 ∈ {eq, ne, cc/hs, cs/lo,
ge, lt, mi, pl, ls, gt, le, hi, vs, vc, qs, al}
ADDABS – Adiciona valor absoluto
Descrição: Adiciona Rx ao valor absoluto do Ry e armazena o
resultado no registador de destino. Útil para calcular a soma das
diferenças absolutas.
Operação:
I.
Rd ← Rx + |Ry|;
Sintaxe:
I.
addabs Rd, Rx, Ry
Operandos:
I.
{d, x, y}∈ {0, 1, ..., 15}
CP.B – Compara um byte
Descrição: Executa uma comparação entre os bytes nos dois
operandos especificados sem diminuir. A operação é executada,
fazendo uma subtração sem escrever de volta a diferença. A
operação define os sinalizadores de estado de acordo com o
resultado da subtração, mas não afeta os registradores operandos.
Operação:
I.
Rd[7:0] - Rs[7:0];
Sintaxe:
I.
cp.b Rd, Rs
Operandos:
I. {d, s} ∈ {0, 1, ..., 15}
CP.H – Compara meia palavra
Descrição: Executa uma comparação entre as meias palavras nos
dois operandos especificados sem diminuir. A operação é executada
fazendo uma subtração sem escrever de volta a diferença. A
operação define os sinalizadores de estado de acordo com o
resultado da subtração mas não afeta os registradores operando.
Operação:
I. Rd[15:0] - Rs[15:0];
Sintaxe:
I. cp.h Rd, Rs
Operandos:
I. {d, s} ∈ {0, 1, ..., 15}
CP.W – Compar palavra
Descrição: Executa uma comparação entre os dois operandos
especificados. A operação é executada, fazendo uma subtração sem
escrever de volta a diferença. A operação define os sinalizadores
de estado de acordo com o resultado da subtração mas não afeta os
registradores operando.
Operação:
I. Rd - Rs;
II.
Rd -
SE(imm6);
III. Rd -
SE(imm21);
Sintaxe:
I. cp.w Rd, Rs
II.
cp.w
Rd, imm
III.
cp.w Rd, imm
Operandos:
I.
{d, s} ∈ {0, 1, ..., 15}
II.
d ∈
{0, 1, ..., 15}
/ imm ∈ {-32, -31, ..., 31}
III.
d ∈
{0, 1, ..., 15}
/ imm ∈ {-1048576, -104875, ..., 1048575}
CPC – Compare com vai um
Descrição: Executa uma comparação entre os dois registradores
especificados. A operação é executada, fazendo uma subtração com
vai um (como empresta um) sem escrever de volta a diferença. A
operação define os sinalizadores de estado de acordo com o
resultado da subtração mas não afeta os registradores operando.
Note que o estado da bandeira zero antes da operação é incluída
no cálculo do novo sinalizador de zero.
Esta instrução permite grandes comparações (64, 128 ou mais
bits).
Operação:
I.
Rd - Rs - C;
II.
Rd -
C;
Sintaxe:
I. cpc
Rd, Rs
II.
cpc
Rd
Operandos:
I. {d, s} ∈ {0, 1, ..., 15} / II.
d ∈
{0, 1, ..., 15}
MAX – retorna o valor máxima
Descrição: Define Rd igual ao máximo com sinal dos registadores Rx
e Ry.
Operação:
I. If Rx > Ry
Rd ←
Rx;
else
Rd ←
Ry;
Sintaxe:
I.
max
Rd, Rx, Ry
Operandos:
d, x, y ∈ {0, 1, ..., 15}
MIN – Retorna o valor mínima
Descrição: Define Rd igual ao mínimo com sinal dos registadores Rx
e Ry.
Operação:
I. se Rx < Ry
Rd ←
Rx;
senão
Rd ←
Ry;
Sintaxe:
I.
min
Rd, Rx, Ry
Operandos:
d, x, y ∈ {0, 1, ..., 15}
NEG – Complemento de dois
Descrição: Executa o complemento de dois no registrador
especificado.
Operação:
I.
Rd ← 0 -Rd;
Sintaxe:
I.
neg
Rd
Operandos:
I. D ∈ {0, 1, ..., 15}
RSUB – Subtrai e reverte
Descrição: Realiza uma subtração e armazena o resultado no
registrador de destino. Semelhante a sub, mas o minuendo e subtraendo
são trocados.
Operação:
I.
Rd ← Rs - Rd;
II.
Rd ←
SE(imm8) - Rs;
Sintaxe:
I.
rsub
II.
rsub
Rd, Rs
Rd, Rs,
imm
Operandos:
I.
{d, s} ∈ {0, 1, ..., 15} / II.
{d,
s} ∈ {0, 1, ..., 15} / imm ∈
{-128, -127, ..., 127}
RSUB{cond4} – Subtrai inversamente e condicional
Descrição: Realiza uma subtração e armazena o resultado no
registrador de destino. Semelhante a sub, mas o minuendo e subtraendo
são trocados.
Operação:
I. se ( cond4)
Rd ←
SE(imm8) - Rd;
Sintaxe:
I. rsub{cond4} Rd, imm
Operandos:
I. d ∈ {0, 1, ..., 15} /cond4 ∈
{eq, ne, cc/hs, cs/lo, ge, lt, mi, pl, ls, gt, le, hi, vs, vc, qs,
al} / imm ∈
{-128, -127, ..., 127}
SBC – Subtração com vai-um
Descrição: subtrai um registrador específico e o valor do bit de
vai-um a partir de um registrador de destino e armazena a sequência
no registrador de destino.
Operação:
I.
Rd ← Rx - Ry - C;
Sintaxe:
I.
sbc Rd, Rx, Ry
Operandos:
I. {x, y, d} ∈ {0, 1, ..., 15}
SCR – Subtrair com vai-um o registrador
Descrição: Subtrai o vai-um para o registrador destino
especificado.
Operação:
I.
Rd ← Rd - C;
Sintaxe:
I. Scr Rd
Operandos:
I.
d ∈ {0, 1, ..., 15}
SUB – Subtração (sem carry)
Operação:
I. Rd ← Rd - Rs;
II. Rd ←
Rx - (Ry << sa2);
III. se
(Rd == SP)
Rd ← Rd
- SE(imm8 << 2);
então
Rd ← Rd
- SE(imm8);
IV. Rd ←
Rd - SE(imm21);
V. Rd ←
Rs - SE(imm16);
Sintaxe:
I. sub
II. sub
III. sub
IV. sub
V. sub
Rd, Rs
Rd, Rx,
Ry << sa
Rd, imm
Rd, imm
Rd, Rs,
imm
SUB cond4 {} - Subtração condicional
Descrição: Subtrai um valor de um determinado registrador e
armazena o resultado no registrador de destino se a condição cond4
for verdade.
Operação:
I. Se (cond4) então Rd ← Rd - imm8;
atualiza
as bandeiras se campo opcode[f] é zero
II. se
(cond4) então Rd ← Rx - Ry;
Sintaxe:
I. sub{f}{cond4} Rd, imm
II.
sub{cond4} Rd, Rx, Ry
TNBZ - Teste se o byte é igual a zero
Descrição: se qualquer um dos bytes 0, 1, 2, 3 da palavra é zero,
o bit da bandeia SR [Z] é 1.
operação:
I.
se
(Rd[31:24] == 0 ∨
Rd[23:16]
== 0 ∨
Rd[15:8]
== 0 ∨ Rd[7:0] == 0 )
SR[Z] ←
1;
então
SR[Z] ←
0;
sintaxe:
I. tnbz Rd
operandos:
I. d ∈ {0, 1, ..., 15}
Nenhum comentário:
Postar um comentário