Lógica

São 15 instruções disponíveis a saber:

AND – Lógico E com deslocamento lógico opcional

Descrição: Executa lógica E bit a bit entre os registradores especificados e armazena o resultado no registrador destino.

Operação: I. Rd ← Rd ∧ Rs;
II. Rd ← Rx ∧ (Ry << sa5);
III. Rd ← Rx ∧ (Ry >> sa5);

Sintaxe: I. and Rd, Rs
II. and Rd, Rx, Ry << sa
III. and Rd, Rx, Ry >> sa

Operandos: I. {d, s} ∈ {0, 1, ..., 15}
II, III {d, x, y} ∈ {0, 1, ..., 15} / sa ∈ {0, 1, ..., 31} 

AND{cond4} – condicional E

Descrição: Executa lógica E bit a bit entre os registradores especificadose armazena o resultado no registrador destino.

Operação: I. if ( cond4)
Rd ← Rx ∧ Ry;

Sintaxe: I. and{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} 

ANDN – Lógico não E

Descrição: Executa uma não E lógico bit a bit entre os registradores especificados e armazena o resultado no registrador destino.

Operação: I. Rd ← Rd ∧ ¬Rs;

Sintaxe: I. Andn Rd, Rs

Operandos: I. {d, s} ∈ {0, 1, ..., 15} 

ANDH, ANDL – Lógico E no registrador na metade alta ou baixa

Descrição: Executa uma lógico E bit a bit na meia palavra entre a parte alta ou baixa no registrador especificado e uma constante. O resultado é armazenado na meia palavra na parte alto ou baixo do registrador destino, enquanto os outros bits mantêm-se inalterados. O parâmetro limpa outra metade – COH, permite que a outra metade seja zerada.

Operação: I. Rd[31:16] ← Rd[31:16] ∧ imm16;
II. Rd[31:16] ← Rd[31:16] ∧ imm16;
Rd[15:0] ← 0;
III. Rd[15:0] ← Rd[15:0] ∧ imm16;
IV. Rd[15:0] ← Rd[15:0] ∧ imm16;
Rd[31:16] ← 0;

Sintaxe: I. andh Rd, imm
II. andh Rd, imm, COH
III. andl Rd, imm
IV. andl Rd, imm, COH

Operandos: I, II, III, IV. d ∈ {0, 1, ..., 15} / imm ∈ {0, 1, ..., 65535} 

COM – complemento um

Descrição: Realizar um complemento um no registrador especificado.
Operação: I. Rd ← ¬Rd;
Sintaxe: I. com Rd
Operandos: I. d ∈ {0, 1, ..., 15} 

EOR – Exclusivo OU com deslocamento lógico opcional

Descrição: Executa um exclusivo OU lógico bit a bit entre os registradores especificados e armazena o resultado no registrador destino.
Operação: I. Rd ← Rd ⊕ Rs;
II. Rd ← Rx ⊕ (Ry << sa5);
III. Rd ← Rx ⊕ (Ry >> sa5);
Sintaxe:
I. eor Rd, Rs
II. eor Rd, Rx, Ry << sa
III. eor Rd, Rx, Ry >> sa
Operandos: I. {d, s} ∈ {0, 1, ..., 15} / II, III. {d, x, y} ∈ {0, 1, ..., 15} / sa ∈ {0, 1, ..., 31} 

EOR{cond4} – EOR lógico condicional

Descrição: Executa um exclusivo OU lógico bit a bit entre os registradoree especificadas e armazena o resultado no registrador destino.
Operação: I. if ( cond4)
Rd ← Rx ⊕ Ry;
Sintaxe: I. eor{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} 

EORH, EORL – Lógica EOR na metade alta ou baixa do registador

Descrição: Executa um lógica OU exclusivo bit a bit entre a meia palavra alta ou baixa no registrador especificado e uma constante. O resultado é armazenado no registrador destino.
Operação: I. Rd[31:16] ← Rd[31:16] ⊕ imm16
II. Rd[15:0] ← Rd[15:0] ⊕ imm16
Sintaxe: I. eorh Rd, imm
II. eorl Rd, imm
Operandos: I, II. D ∈ {0, 1, ..., 15} / imm ∈ {0, 1, ..., 65535} 

OR – OU lógico com Deslocamento lógico opcional

Descrição: Executa um bit a bit OU lógico entre os registradores especificados e o armazenado, o resultado vai para o registrador destino.
Operação: I. Rd ← Rd ∨ Rs;
II. Rd ← Rx ∨ (Ry << sa5);
III. Rd ← Rx ∨ (Ry >> sa5);
Sintaxe: I. or Rd, Rs
II. or Rd, Rx, Ry << sa
III. or Rd, Rx, Ry >> sa
Operandos: I. {d, s} ∈ {0, 1, ..., 15}
II, III. {d, x, y} ∈ {0, 1, ..., 15} / sa ∈ {0, 1, ..., 31} 

OR{cond4} – OU lógico condicional

Descrição: Executa um bit a bit OU lógico entre os registradores e o byte armazenado e especificado. O resultado será enviado no registrador destino.

Operação: I. if ( cond4)
Rd ← Rx ∨ Ry;

Sintaxe: I. or{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}
  

ORH, ORL – OR lógico na metade alta ou baixa do registrador

Descrição: Executa um bit a bit OU lógico entre a palavra alta ou baixa no registrador especificado e uma constante. O resultado é armazenado no registo de destino.
Operação: I. Rd[31:16] ← Rd[31:16] ∨ imm16;
II. Rd[15:0] ← Rd[15:0] ∨ imm16;
Sintaxe: . orh Rd, imm
II. orl Rd, imm
Operandos: I, II. d ∈ {0, 1, ..., 15} / imm ∈ {0, 1, ..., 65535}

TST – teste de registrador

Arquitetura revisão: Arquitetura revision1 e superior.
Descrição: teste de registradores. Usado para verificação de um subconjunto de um ou mais bits. O resultado é retornado e as bandeiras estão determinados.
operação: I. Rd ∧ Rs;
sintaxe: I. tst Rd, Rs
operandos: I. {d,s} ∈ {0, 1, ..., 15} 

Nenhum comentário:

Postar um comentário