As Tabelas 11 à 15 mostram os opcodes utilizados pela máquina virtual. Sendo que a Tabela 15 mostra opcodes de uso interno. Esses são aqueles que não podem ser utilizados pelo usuário mas sim pelo TAP quando da geração de códigos. Os opcodes constantes nas demais tabelas podem ser utilizados pelo usuário usuário através da estrutura ASM mostrada na seção 4.2.
Opcode Descrição
PUSH_CTENUMERO <número> Insere uma constante tipo número na pilha
PUSH_CTELOGICO <lógico> Insere uma constante tipo lógico na pi- lha
PUSH_CTETEXTO <texto> Insere uma constante tipo texto na pi- lha
PUSH_CTETEMPO <tempo> Insere uma constante tipo tempo na pi- lha
PUSH_CTECALENDARIO <calendário> Insere uma constante tipo calendário na pilha
PUSH_CTEBINARIO <binário> Insere uma constante tipo binário na pilha
PUSH_NULL Insere a constante null na pilha
PUSH_INST <identicador> Insere a instância <identicador> na pilha
PADD Remove os dois valores do topo e co- loca o resultado da expressão <p1> + <p2> na pilha
Opcode Descrição
PSUB Remove os dois valores do topo e coloca o resultado da expressão <p1> - <p2> na pilha
PMULT Remove os dois valores do topo e coloca o resultado da expressão <p1> * <p2> na pilha
PDIV Remove os dois valores do topo e coloca o resultado da expressão <p1> / <p2> na pilha
PINTDIV Remove os dois valores do topo e coloca a parte inteira do resultado da expres- são <p1> / <p2> na pilha
PINTMOD Remove os dois valores do topo e coloca o resto da expressão <p1> / <p2> na pilha
PPOT Remove os dois valores do topo e coloca o resultado da expressão <p1> <p2> na pilha
PRAD Remove os dois valores do topo e co- loca o resultado da expressão <p1> (1/<p2>) na pilha
PNOW Põe no topo da pilha dado do tipo Ca- lendário (data atual)
PQUESTION Retira do topo da pilha variável de re- torno, retira da pilha pergunta, apre- senta para o usuário a pergunta infor- mada
PSWAP Inverte a posição dos dois ultimos ele- mentos to topo da pilha
PIGUAL Remove os dois valores do topo e co- loca o resultado da expressão <p1> = <p2> na pilha
Opcode Descrição
PDIF Remove os dois valores do topo e co- loca o resultado da expressão <p1> <> <p2> na pilha
PMAIOR Remove os dois valores do topo e co- loca o resultado da expressão <p1> > <p2> na pilha
PMENOR Remove os dois valores do topo e co- loca o resultado da expressão <p1> < <p2> na pilha
PMAIOREQ Remove os dois valores do topo e co- loca o resultado da expressão <p1> <= <p2> na pilha
PMENOREQ Remove os dois valores do topo e co- loca o resultado da expressão <p1> >= <p2> na pilha
PNAO Remove os dois valores do topo e coloca o resultado da expressão Não <p1> na pilha
POU Remove os dois valores do topo e co- loca o resultado da expressão <p1> ou <p2> na pilha
PE Remove os dois valores do topo e coloca o resultado da expressão <p1> e <p2> na pilha
PXOU Remove os dois valores do topo e co- loca o resultado da expressão <p1> ou exclusivo <p2> na pilha
PWRITE Remove o conteúdo do topo da pilha e exibe ao usuário
POP_TO_VAR Remove <valor> e <variavel> da pi- lha. Em seguida executa <variavel> ← valor
Opcode Descrição
CALL <sentença> realiza uma chamada a uma denição ADM_PACOTE <opc> Rotina de gerenciamento de pacotes.
OPC[CRIAR=1,EXCLUIR=2,REN=3, exp=4, imp=5, publ=6, install=7] PCALENDARSRV Comando de serviços para expressões
do tipo Calendário
PSEL_SENT_SIMILAR Remove do topo da pilha a última ex- pressão passada pelo usuário e procura por sentenças similares, pedindo orien- tação do usuário para selecionar uma PCHK_WRD_LST Verica se a constante texto no topo da
pilha é uma palavra cadastrada na base de dados do agente
PCALENDARSRV Comando de serviços para expressões do tipo Calendário
PADD_WRD_LST Cadastra a sentença existente no topo da pilha como uma palavra nova no ser- vidor web
UPD_WRD_LST Atualiza a lista local de palavras a par- tir da lista existente no servidor web PCT_INFO Exibe tela com informações do pacote
atual para usuário
Opcode Descrição
ACT_LOCALVAR <identicador> Ativa a variável <identicador> hline LABEL Marcador de rótulo (apenas uso in-
terno)
JMP <idRotulo> Salto incondicional para rótulo <idRo- tulo>
JMP_TP_FALSE <idRotulo> Se o topo da pilha for uma variável do tipo lógico com valor falso, efetua salto para rótulo <idRotulo>
TERMINATE Encerra um processo
CREATE_FUNC Associa uma sentença ao código pas- sado na seção indicada no cabeçalho (uso interno)
REDEFINIR_FUNC Atualiza o código passado na seção in- dicada no cabeçalho para uma sentença já denida(uso interno)
CF_SECTION_CODE_NAME Dene uma seção de código vazio (uso interno)
RETURN Encerra a função atual com retorno de valor
ENCERRAR_SESSAO Encerra o agente
INCBC Incrementa o contador de bloco (uso in- terno)
DECBC Decrementa o contador de bloco (uso interno)