Convenções
Estas convenções referem-se às tabelas de descrição das instruções do PEPE.
As instruções sombreadas são reconhecidas pelo assemblador mas na realidade podem ser sintetizadas com recurso a outras, pelo que não gastam codificações de instruções. São oferecidas apenas como notação alternativa para comodidade do programador de linguagem assembly e maior clareza dos programas.
As linhas marcadas com “Livre” correspondem às codificações possíveis e ainda não ocupadas.
Os campos marcados com “XXXX” não são relevantes e podem ter qualquer valor (são ignorados pelo PEPE).
Na coluna “Acções” indica-se o significado de cada instrução numa linguagem de transferência de registos (RTL), cujos aspectos essenciais são indicados pela tabela seguinte.
Simbologia |
Significado |
Exemplo |
Ri |
Registo principal i (R0 a R15, incluindo RL, SP, RE, BTE e TEMP) |
R1 |
PC |
Registo Program Counter. Só usado do lado esquerdo da atribuição. |
PC ¬ expressão |
EIS |
Endereço da Instrução Seguinte. Não é um registo, mas apenas uma notação que representa o valor do endereço da instrução seguinte (ou seja, é o endereço da instrução corrente acrescido de 2 unidades). |
EIS |
RER |
Registo do Endereço de Retorno (interno ao processador, não acessível em assembly). Contém o endereço de retorno quando se invoca uma rotina ou excepção. |
RER |
Mw[end] |
Célula de memória de 16 bits que ocupa os endereços end e end+1 (end tem de ser par, senão gera uma excepção). O PEPE usa o esquema Big-Endian, o que significa que o byte de menor peso de Mw[end] está no endereço end+1. |
Mw[R1+2] Se R1=1000H, o byte de menor peso está em 1003H e o de maior peso em 1002H |
Mb[end] |
Célula de memória de 8 bits cujo endereço é end (que pode ser par ou ímpar) |
Mb[R3+R4] |
(i) |
Bit i de um registo ou de uma célula de memória |
R2(4) Mw[R1](0) |
Ra(i..j) |
Bits i a j (contíguos) do registo Ra (i >= j) |
R2(7..3) |
bit{n} |
Sequência de n bits obtida pela concatenação de n cópias de bit, que é uma referência de um bit (pode ser 0, 1 ou Ra(i)) |
0{4} equivale a 0000 R1(15){2} equivale a R1(15) || R1(15) |
dest ¬ expr |
Atribuição do valor de uma expressão (expr) a uma célula de memória ou registo (dest). Um dos operandos da atribuição (expressão ou destino) tem de ser um registo ou um conjunto de bits dentro do processador. O operando da direita é todo calculado primeiro e só depois se destrói o operando da esquerda, colocando lá o resultado de expr. dest e expr têm de ter o mesmo número de bits. |
R1 ¬ M[R2] M[R0] ¬ R4 + R2 R1(7..0) ¬ R2(15..8) |
Z, N, C, V, IE, IE0 a IE4, DE, NP |
Bits de estado no RE – Registo de Estado |
V ¬ 0 |
Expr : acção |
Executa a acção se expr for verdadeira (expr tem de ser uma expressão booleana) |
((NÅV)ÚZ)=1 : PC ¬ EIS + 2 |
Ù, Ú, Å |
E, OU, OU-exclusivo |
R1 ¬ R2 Ù R3 |
|| |
Concatenação de bits (os bits do operando da esquerda ficam à esquerda, ou com maior peso) |
R1 ¬ R2(15..8) || 00H |