BR{cond} – Salta se condição satisfeita
Descrição: Salta se a condição especificada for satisfeita.
Operação:
I. if (cond3)
PC ← PC
+ (SE(disp8) << 1);
else
PC ← PC
+ 2;
II.
if
(cond4)
PC ← PC
+ (SE(disp21) << 1);
else
PC ← PC
+ 4;
Sintaxe:
I. br{cond3}disp
II.
br{cond4}disp
Operandos:
I. cond3 ∈ {eq, ne, cc/hs, cs/lo, ge, lt, mi, pl}
/ disp ∈
{-256, -254, ..., 254}
II.
cond4 ∈ {eq, ne, cc/hs, cs/lo, ge, lt, mi, pl, ls, gt, le, hi, vs,
vc, qs, al}
/ disp ∈ {-2097152, -2097150, ..., 2097150}
RJMP – salto relativo
Descrição: salta a quantidade especificada em relação ao contador
de programa.
Operação:
I.
PC ← PC + (SE(disp10)<<1);
Sintaxe:
I.
rjmp
PC[disp]
Operandos:
I.
disp ∈ {-1024, -1022, ..., 1022}
ACALL – Chamada aplicação
Descrição: A instrução executa uma chamada de função do
aplicativo.
Operação:
I. LR ← PC + 2;
PC ←
*(ACBA + (ZE(disp8)<<2));
Sintaxe:
I. acall
disp
Operandos:
I. disp ∈ {0, 4, ..., 1020}
ICALL – Chamada indireta para subrotina
Descrição: Chama a subrotina apontada pelo ponteiro residente em
Rp.
Operação:
I. LR ← PC + 2;
PC ←
Rd;
Sintaxe:
I. icall Rd
Operandos:
I. d ∈ {0, 1, ..., 15}
MCALL – chama uma subrotina
Descrição: Chamada de subrotina para um chamada
de destino especificada em um local que reside na memória.
Operação:
I.
LR ← PC + 4
PC ←
*((Rp & 0xFFFFFFFC) + (SE(disp16) << 2))
Sintaxe:
I.
mcall
Rp[disp]
Operandos:
p ∈ {0, 1, ..., 15}
/ disp ∈ {-131072, -131068,..., 131068}
RCALL – chamada relativa de sub-rotina
Descrição:
o contador de programa relativo aponta para o endereço da sub-rotina
Operação:
I.
LR ← PC + 2
PC ← PC
+ (SE(disp10)<<1)
II.
LR ← PC
+ 4
PC ← PC
+ (SE(disp21)<<1)
Sintaxe:
I.
rcall
II.
rcall
PC[disp]
PC[disp]
Operandos:
I.
disp ∈ {-1024, -1022, ..., 1022}
II.
disp
∈ {-2097152, -2097150, ..., 2097150}
SCALL – chamada no supervisor
Descrição: esta instrução executa uma chamada de rotina do
supervisor. O comportamento da instrução não é dependente do modo
que é chamado, permitindo scall a ser executado a partir de todos os
contextos. Scall salta para um ponto de entrada dedicado em relação
ao EVBA. Scall pode usar a mesma convenção de chamada como chamadas
de subprogramas regulares.
Operação: I.se (
SR[M2:M0] == {B’000 or B’001} )
se
(microarchitecture == AVR32A)
*(--SPSYS)
← PC + 2;
*(--SPSYS)
← SR;
PC ←
EVBA + 0x100;
SR[M2:M0]
← B’001;
então
RARSUP ←
PC + 2;
RSRSUP ←
SR;
PC ←
EVBA + 0x100;
SR[M2:M0]
← B’001;
então
LRCurrent
Context ← PC + 2;
Sintaxe:
I.
scall
Operandos:
I.
nenhum
RET{cond4} – retorno condicional da sub-rotina
Descrição: retorna da sub-rotina se a condição especificada é
verdadeira. Os valores são transferidos para o registrador de
retorno, o valor de retorno é testado, e as bandeiras são
definidas.
Operação:
I.
se (cond4)
se (Rs !=
{LR, SP, PC})
R12 ←
Rs;
senão se
(Rs == LR)
R12 ←
-1;
senão se
(Rs == SP)
R12 ←
0;
senão
R12 ←
1;
Test R12
and set flags;
PC ←
LR;
Sintaxe:
I.
ret{cond4} Rs
Operandos:
I.
cond4 ∈ {eq, ne, cc/hs, cs/lo, ge, lt, mi, pl, ls, gt, le, hi,
vs, vc, qs, al}
s ∈{0,
1, ..., 15}
RETD – Retornar do modo depuração
Descrição: O Retorno do modo de depuração.
Operação:
I.
SR ← RSR_DBG
PC ←
RAR_DBG
Sintaxe:
I.
retd
Operandos:
Nenhum
RETE – Retorno de manipulador de eventos
Descrição: Retorna de uma exceção ou interrupção. SREG [L] é
baixado para suportar o acesso à memória atômica com a instrução
stcond. Esta instrução só pode ser executado na INT0-INT3, modos
EX e de MNI. Execução nos modos de aplicação ou Supervisor irá
desencadear uma exceção de violação de privilégio.
Operação:
I.
se (microarchitecture == AVR32A)
SR ←
*(SPSYS++)
PC ←
*(SPSYS++)
If (
SR[M2:M0] == {B’010, B’011, B’100, B’101} )
LR ←
*(SPSYS++)
R12 ←
*(SPSYS++)
R11 ←
*(SPSYS++)
R10 ←
*(SPSYS++)
R9 ←
*(SPSYS++)
R8 ←
*(SPSYS++)
SREG[L] ←
0;
senão
SR ←
RSRCurrent Context
PC ←
RARCurrent Context
SREG[L] ←
0;
Sintaxe:
I. RETE
Operandos:
nenhum
RETS – Retorno da chamada supervisor
Descrição: retorna de uma chamada supervisor.
Operação:
I.
se ( SR[M2:M0] == B’000 )
Issue
Privilege Violation Exception;
senão se
( SR[M2:M0] == B’001 )
se
(microarchitecture == AVR32A)
SR ←
*(SPSYS++)
PC ←
*(SPSYS++)
senão
SR ←
RSRSUP;
PC ←
RARSUP;
senão
PC ←
LRCurrent Context
Sintaxe:
I
. RETS
Operandos:
Nenhum
Nenhum comentário:
Postar um comentário