UM SISTEMA DE PROGRAMAçEO E DEPURAÇEO CON
VERSACIONAL PARA LINGUAGEM TIPO MONTADOR
PARTE I1
SUPERVISOR E INTERPRETADOR
Jaime Frederico Gutbrod Caruso
TESE SUBMETIDA AO CORPO DOCENTE
DA
COORDENAÇAO DOS PROGRAMAS DE P ~ S
-
-GRADUAÇ~O
DE
ENGENHARIA DA UNIVERSIDADE FEDERAL
DO RIO
DE JANEIRO
COMO PARTE DOS REQUISITOS
NECESSARIOS
PARA A OBTENÇÃO DO
GRAU
DE MES
-
TRE EM CIÊNCIA (M.Sc.)
Aprovada por
:Presidente
RIO DE JANEIRO
ESTADO DA GUANABARA
-
BRASIL
A minha esposa,
AGRADECIMENTOS
Quero expressar a minha gratidão a todos aqueles que,
de algum modo, me auxiliaram na elaboração deste trabalho.
Agradeço
ã
CAPES, BNDE e
5
COPPE, pelo apoio f
inan
-
ceiro dado durante a época em que obtive meus créditos.
Agradeço, especialmente, ao meu amigo 0tacilio
J O S ~Caro110 de Souza pelo incentivo dado para que eu me empenhasse em
mais rapidamente apresentar meu traba1ho;ao meu orientador, Prof.
Bierre Jean Lavelle; Professores, Funcioniirios
e Colegas da COPPE;
aos meus pais e aos meus sogros.
Agradeço as Srtas. Beatriz Moojen e Cristina Raymun-
do, pela dedicação com que datilografaram este trabalho.
iii
RESUMO
Um S i s t e m a de Programação e Depuraçso C o n v e r s a c i o n a l p a r a Linguagem Tipo Montador, f o i p r o j e t a d o p a r a o minicomputador MITRA 1 5 , sem memória a u x i l i a r , E l e
é
composto d e um S u p e r v k r q u ec o n t r o l a o s i s t e m a , um A n a l i s a d o r e um I n t e r p r e t a d o r .
A P a r t e I : A n a l i s a d o r e Montador
e
a p a r t e que sv p r e o-
cupa com a n á l i s e s i n t á t i c a da linguagem e com a montagem do p r o g r a
-
ma p a r a a execução p e l o I n t e r p r e t a d o r .A e s t r u t u r a i n t e r n a d e s e n v o l v i d a p a r a o prograrm
é
t a l que p e r m i t e a decompilação do programa a n t e s de s u a e n t r a d a n a f a - s e d e i n t e r p r e t a ç ã o . A linguagem c o n v e r s a c i o n a l i n t e r p r e t a d aé
um s u b c o n j u n t o d a linguagem a s s e m b l e r do MITRA 15. A P a r t e I1 d i v i d e - s e em I n t e r p r e t a d o r e S u p e r v i s o r . O I n t e r p r e t a d o r t r a b a l h a s o b r e a e s t r u t u r a montada pe-
10 A n a l i s a d o r , e x e c u t a n d o o programa. O S u p e r v i s o ré
quem c o n t r o l a o s i s t e m a e p o r s u a e s-
t r u t u r a p o s s i b i l i t a o p a r t i l h a m e n t o do tempo e n t r e o s programas.A
Conversational Programming and Debugging System for
Assembler-Like Language is designed for the MITRA 15 mini..computer
without auxiliary memory. It is made up of an Analyser and AsBem-
bler, and a Supervisor and an Interpreter,
The first part, the Analyser and Assembler, does the
syntactical analysis and assembly of programs to be executed
bythe
Interpreter. The interna1 structure of programs is such that a de
-
-compilation can be performed before starting the interpretation.
The interpreted conversational language is a sub-set of the MITRA
15 assembly language.
The second part is divided into the Interpreter
and
Supervisor.
The Interpreter works on the analyser-built strucime,
executing the program.
The Supervisor controls the system allocating the Ana
lyser, Assembler and Interpreter creating a time-sharing environ-
ment
.
C A P ~ T U L O I1
.
INTERPRETADOR...
2 D I S T R I B U I D O R...
2 ENDEREÇADOR...
5 EXECUTOR...
11...
C A P ~ T U L O I11.
SUPERVISOR 1 4 CONTEXTO DE PROGRAMA...
1 5 ORGANIZAÇÃO E MANIPULAÇAO DOS CON-...
TEXTOS 1 6 DESCRIÇÃO DO CONTEXTO...
1 9...
COMANDOS DO SISTEMA 2 2...
SINTAXE 2 2SEMKNTICA
...
2 3 D I S T R I B U I D O R DOS COMANDOS...
27 ROTINA DE f ALO...
2 9...
ROTINA DE ! BYE 2 9 ROTINA DE 1 GO...
3 0 ROTINA DE ! RED...
3 0 ROTINA DE I RUN...
31...
ROTINA DE I L S T E ! PCH 3 2 ROTINAS DEALTERAÇAO
...
3 4 ROTINA DE RTN...
3 6...
COMENTARIOS
3 7 ROTINA DE MENSAGENS DO SISTEMA...
38...
MAIN-LOOP
C A P ~ T U L O IV
.
CONCLUSÃO...
...
B I B L I O G R A F I A
ANEXO I
.
DESCRIÇÃO DO STATUS...
ANEXO I1.
ALGUNS A S P E C T O S DA D I R E T I V A DATA T I P O E T I Q U E -Complementando o p r o j e t o do S i s t e m a d e f i n i d o n a Tese "Um S i s t e m a d e Programação e Depuração C o n v e r s a c i o n a l p a r a Lingua-. gem do T i p o Montador P a r t e I A n a l i s a d o r e Montador", a Parte I1 a p r e
-
s e n t a o I n t e r p r e t a d o r e o S u p e r v i s o r do mesmo.Observe-se que em p r i m e i r o l u g a r a p r e s e n t a - s e o I n t e r
-
p r e t a d o r , uma vez que p r o c u r o u - s e a p r e s e n t a r p r i m e i r o a s p a r t e s doSistema não d i r e t a m e n t e e n v o l v i d a s com o TIME-SHARING ( A n a l i s a d o r e I n t e r p r e t a d o r ) , e p o r f i m o S u p e r v i s o r .
Devido a ordem d e a p r e s e n t a ç ã o e s c o l h i d a , v á r i o s no- mes r e f e r e n c i a d o s no I n t e r p r e t a d o r não e s t ã o d e f i n i d o s . A s d e f i n i
-
ç õ e s d e s t e s nomes encontram-se n a s e ç ã o " D e s c r i ç ã o do Contexto".INTERPRETADOR
O Interpretador
é
a parte do Sistema responsável pela
execução dos programas corretamente montados.
A
execução de uma ins
-
trução, pelo Interpretador,
é
decomposta em três fases distintas:
-
Fetch;
-
Endereçamento;
-
Execução propriamente dita.
O Interpretador
6
composto de três seções correspon
-
dentes a cada uma das fases acima mencionadas, como vemos na figura.
Distribuidor
I
1
Endereçador
Executor
DISTRIBUIDOR
O
Distribuidor
é
responsável pelo controle da execu
-
ção do Interpretador.
i través
do contador de programa WCTPROG) ob
-
têm
oconteúdo da próxima instrução
aexecutar; armazena-o na du
-
O Endereçador r e t o r n a ao D i s t r i b u i d o r c a r a c t e r i z a n d o , no I n d e x a d o r , s e o e n d e r e ç o o b t i d o s i t u a - s e d e n t r o dos l i m i t e s c o r - r e t o s ou n ã o , c a s o em que a execução do p r o c e s s o
é
i n t e r r o m p i d a com r e t o r n o ao S u p e r v i s o r e&
STATUS i g u a l a GF000, c a s o c o n t r á r i o a-
e xecução p r o s s e g u e normalmente com a chamada do E x e c u t o r . O E x e c u t o r r e t o r n a ao D i s t r i b u i d o r , c a r a c t e r i z a n d o no Indexador s e a p a r i d a d e do e n d e r e ~ o do operando e s t á c o r r e t a ou n ã o , c a s o em que a execução do programaé
i n t e r r o m p i d a com r e t o r n o ao S u p e r v i s o r e #STATUS i- g u a l a F,F000.A ~ Ó S a execução normal d e uma i n s t r u ç ã o , o c o n t e ú d o da p a l a v r a # C L O C K
é
incrementado de um. E s t a p a l a v r aé
u t i l i z a d a como c o n t r o l a d o r do tempo concedido p a r a a execução do programa e s e u v a l o r m ~ x i m oé
1000 ( m i l ) . A t i n g i d o e s t e v a l o r , a execução doC
programa e s u s p e n s a .
O D i s t r i b u i d o - r d e v o l v e o c o n t r o l e ao S u p e r v i s o r com o
#
STATUS m o d i f i c a d o p a r a IDLE e o u s u á r i oé
f o r ç a d o a e n v i a r um co-
mando ! p G O ou !flBYE ( v e r d e s c r i ç ã o d o s Comandos do S i s t e m a ) . P a r t i-
c u l a r m e n t e a i n s t r u ç ã o CSV M:IVAIT, ao s e r e x e c u t a d a , f o r ç a o c o n t e-
Údo d o @ CLOCK p a r a 9 9 9 d e modo a p o s s i b i l i t a r o r e t o r n o a o Super- v i s o r .~
~
c o m p l e t a r a execução normal de uma i n s t r u ç ã o6
s
e sempre que o conteúdo da p a l a v r a#
CLOCK f o r menor que 1 0 0 0 , o D i s-
t r i b u i d o r v'ai f a z e r o FETCH d e uma nova i n s t r u ç ã o .Na p á g i n a ao l a d o e s t á a p r . e s e n t a d o o MCRO-FLUXO do D i s t r i b u i d o r .
CALL Ender.eçador SIM Retorno ao * ~ u p e r v i s o r E x e c u t o r
L
,Retorno ao S u p e r v i s o rENDEREÇADOR.
O Endereçador determina o número de operandos(*)
da
instrução, obtém e verifica a validade do endereço de cada operan-
do-.
Neste parágrafo são considerados quatro tipos bási
-
cos de instrução:
-
Instruções normais
-
São as instruções de um operan-
do, cujo endereço
é
caracterizado pelo ,tipo
de endereço e argumen-
to.
-
Instruções de endereço em registrador
-
6
osubconjm
-
to das instruções de CSV simuladas, menos CSV
M:KEYe CSV M:EXlT.
O
endereço absoluto do operando está em
#ACUMUL.
-
Instruções de Manipulação do STRING
-
São as instru-
ções de três operandos. O endereço do primeiro operando
6
caracte-
rizado pelo tipo de endereço e argumento. O endereço absoluto
do
segundo operando está em
/ACUMUL.
O endereço absoluto do terceiro
operando
6
obtido pela expressão:
Conteúdo de
~ A C U M U L + C ~ ~ ~ ~ Ú ~ ~
de
[EXTAC
-
1.-
Instruções de zero endereço
-
Explicadas mais a fren
-
te.
A obtenção do endereço absoluto de um operando caracterizado por
tipo de endereço
eargumento
é
função do tipo de endereço, confor-
- -- - --
C*)
Considera-se operando, o dado ou o rótulo referenciado
pela
instrução que está sendo interpretada, ou o conteúdo de um re
gistrador.
me descrição abaixo;
-
Endereçamento tipo Direto Geral/Direto Local
-
-
Esses tipos de endereçamentos referem-se somente
a
instruções que operam sobre dados.
O dado se encontra na zona diretamente acessível da
CDS ou da LDS e,
aobtenção do seu endereço se processa da se-
guin*e maneira:
1.
Endereço do nome de dados
-
Éobtido através da ex-
pressao:
#APTCDS
+ARGUMENTO x
8~APTLDS
+ARGUMENTO x
82.
Endereço do dado propriamente dito
-
Éobtido atra
-
vés da expressão
:#APDCDS
+DESLOCAMENTO DO
NOME DE-DADOS
COMUM
-
Endereçamento tipo Indireto Local
-
O endereçamento tipo Indireto Local se refere somen-
te
2
instruções que operam sobre dados.
A obtenção do endereço se processa,
emparte, de for
-
ma idêntica
2
exposta acima, para o endereçamento tipo Direto Lo-
cal, sendo que o passo 2 deve ter o seu significado mudado, ou se
-
Ja:
expressão:
O
endereço do dado
obtido através de mais um passo.
3.
Endereço do Dado
-
E
obtido do conteúdo do endereço
determinado em
2.O endereço obtido em
3é
verificado contra os limi
-
tes das áreas utilizadas da CDS e d e cada LDS.
Se o endereço obtido não se situa entre os limites da
área utilizada de uma das seções do programa, o controle
é
devolvi
-
do ao Distribuidor com indicação de erro no Indexador.
-
~ n d e r e ~ a m e n t o
tipo Indireto
~ e ~ a lIndexado/Indireto Local Indexct.
do
.-
-
4
Estes tipos de endereçamento se referem somente
a
instruções que operam sobre dados.
A
obtenção do endereço se processa,em parte, de for
-
ma idêntica
2
exposta acima, para endereçamento tipo Direto -Geral-/
Direto Local, sendo que o passo
2deve ter o seu significado muda
-
do, ou seja:
2.
Endereço do endereço do início da área de dados
-
Éobtido através da expressão:
SOS.
3.
Endereço do inicio da Area de Dados
-
6
obtido do con
-
teúdo do endereço determinado em
2.4. Endereço do Dado
-
é
obtido através da expressão:
ENDEREÇO INICIAL DA
AREA
DE DADOS
+{INDEX
As mesmas verificações, quanto
ã
validade do endere-
ço, feitas para endereçamento tipo Indireto Local
,
devem ser pro
cedidas aqui.
-
Endereçamento tipo LABEL
-
O endereçamento tipo LABEL se refere somente
5
ins
-
truções de ramificação para uma outra instrução dentro da mesma
LPS. Este tipo de endereçamento
é
uma adaptação dos tipos RELATE
PLUS e RELATIF MOINS do MITRA 15 (ver MITRA 15
-
Manuel de
ré
-
sentation).
O argumento fornece o número do rótulo da instrução
para a qual deve ser feita a ramificasão. Este rótulo
é
pesquisa-
do entre os limites da LPS atual e quando encontrado, fornece o
endereço da ramificação.
Se a instrução simulada
6
um BRX, após ter sido en
-
contrado o rótulo, somamos ou subtraimos do endereço da ramifica-
ção o valor do produto
4 x conteúdo do
{INDEX,
dependendo se o
endereço da ramificação
é
maior ou menor que
{CTPROG.
O endereço assim calculado, endereço da ramificação
utilizada da LPS atual, e se estiver fora deles, o controle
devolvido ao Distribuidor com indicacão de erro no Indexador.
-
Endereqamento tipo Indireto Geral/Indireto Local LABEL
-
Estes tipos de endereçamentos referem-se somente
instruções de ramificação.
O endereçamento tipo Indireto Local LABEL
é
uma adag
tação do endereçamento tipo Indireto Local nas instruções de rami
-
f
icacão
.
A obtenção do endereço se processa,
em parte,.
de for
-
ma idêntica
à
exposta acima para o endereçamento tipo Direto Ge-
ral/Direto Local, sendo que o passo
2deve ter o seu significado
mudado, ou seja:
2.
Endereço do Endereço da Instrução
-
Éobtido através
da expressão:
{APDCDS
+DESLOCAMENTO
DO
NOME
DE
DADOS COMUM
OU
~APDLDS
+DESLOCAMENTO DO
NOME DE
DADOS LOCAL
O endereço da instrução
é
obtido através de mais um
passo:
3.
Endereço da Instrução
-
Éobtido do conteúdo do ende
reço determinado em
2.Se a instrução simulada
é
um
BRX,
o passo 2
6
ligei
-
ramente modificado, ou seja:
2.
Endereço do endereço da Instrução
-
Éobtido através
O
endereço obtido em
3é
verificado contra os limi
-
tes das áreas utilizadas de cada LPS.
Se o endereço obtido não se situa entre os limites
I
da área utilizada de uma das seções do programa, o controle
é
de-
volvido ao Distribuidor, com indicação de erro no Indexador.
-
Endereçamento Aipo Seção
-
O
endereçamento tipo Seção se refere somente
à
ins-
trução CLS. O argumento fornece o número da seção dentro da LPS
atual. Este número
6
utilizado na pesquisa da posição correspon
-
dente a esta seção na Tabela de Nomes da LDS atual. Nesta posi-
ção está armazenado o endereço da entrada correspondente
aesta
seção, na
PRT
do programa, e este
é
o endereço do operando.
-
Endereçamento tipo paramétrico e Paramétrico Indexado
-
No endereçamento tipo paramétrico, o ope,rando
é
o
-
prio argumento, enquanto no endereçamento tipo Paramétrico Indexa
-
do, o operando
é
obtido somando-se o argumento e o conteúdo
de
#INDEX.
Em ambos os casos, o operando
é
armazenado n a palavra de
endereço
8(PRT) do programa, e este passa a ser o endereço dado.
O endereço obtido por um dos métodos acima descritos
é
armazenado em
#APPES~,
e o controle
é
devolvido ao Distribui
-
dor com indicação de normalidade no Indexador.
/ACUMUL ou obtidos através de
#ACUMUL
e
#EXTAC (instruções de
endereço em registrador e instruções de manipulaão de STRING) são
verificados contra os limites das áreas utilizadas da CDS e de
cada LDS.
Se o endereço não se situa entre os limites de uma
das seções do programa, o controle
é
devolvido ao Distribuidor
,
com indicação de erro no Zndexador.
As instruções de zero endereço são consideradas as
operações entre registradores (ver MITRA 15
-
Manuel de
ré senta-
tion) e as instruções CSV M:KEY e CSV M:EXIT. Em ambos os ca
-
sos, nenhuma ação
é
tomada no sentido da obtenção do endereço.
A
passagem deste tipo de instruções, pelo Endereçador, visa manter
um fluxo Único e simples para a execução.
EXECUTOR.
O Executor
é
responsável pela execução propriamente
dita das instruções.
Algumas funções básicas são realizadas pelo Executor
antes de executar uma instrução:
-
O contador de programa
( ~ ~ T P R O G )
é
incrementado e
passa a apontar a próxima instruqão.
Este valor, evidentemente,
ser alterado pela
execução de alguma das instruções de ramificação.
-
Verifica*
se o endereço do operando (conte6do
de
r u ç ã o a c e i t a e n d e r e ç o de BYTE ou e n d e r e ç o d e p a l a v r a ( v e r MITRA 1 5
-
Manuel de ~ r é s e n t a t i o n ) . A v e r i f i c a-
ç ã oé
f e i t a a t r a v é s d a T a b e l a de Apontadores p a r a a T a b e l a d e C l a s s e s de Endereços. O s q u a t r o BITS d a e s q u e r d a do e l e m e n t o da t a b e l a c o r r e s p o n d e n t e i n s-
t r u ç ã o , descrevem s e e s t a pode a c e i t a r e n d e r e ç o de BYTE '(valor d o s q u a t r o BITS6
z e r o ) ou e n d e r e ç o de p a l a v r a ( v a l o r d o s q u a t r o BITSé
um). Se o módulo do e n d e r e ç o não f o r c o m p a t í v e l com a i n s t r u ç ã o , o c o n t r o l e6
d e v o l v i d o ao D i s t r i b u i d o r com i n d i c a ç ã o d e e r r o no I n d e x a d o r .Se a i n s t r u ç ã o a e x e c u t a r
é
um CSV M : I O , o I n t e r p r e - t a d o r p r e p a r a um CONTROL BOLCK e um BUFFER p a r a o programa n a Zona de Dados Comum do S i s t e m a e e x e c u t a um CSVM:
Z I O p a r a e s t e CKINTROL BLOCK. O c o n t r o l e d a s o p e r a ç ã o de e n t r a d a e s a i d a6
f e i t a p e l o Su- p e r v i s o r , e s e r á d e t a l h a d o no c a p í t u l o r e f e r e n t e a e s t e .O programa pode s e r i n t e r p r e t a d o com OVERLAP d e 1/0 e p r o c e s s a m e n t o i n t e r n o e n q u a n t o não a p a r e c e r uma CSV M:WAIT.
A execução de um CSV M:WAIT f o r ç a a devolução d e con
-
t r o l e ao S u p e r v i s o r ( v e r D i s t r i b u i d o r ) e m o d i f i c a ç ã o do ~ S T A T U S pa-
r a "aguardando fim de I/OM. O programa s ó , v o l t a r á a s e r e x e c u t a d o ao f i m d a o p e r a ç ã o d e E/S. A execução de CSV M:EXIT p r o v o c a a de-
v o l u ç ã o do c o n t r o l e ao Supervisar comISTATUS
i g u a l a t;0000 ef i m de execução do programa.
A s demais i n s t r u ç õ e s , i n c l u s i v e o s demais CSV, s ã o i n t e r p r e t a d o s d i r e t a m e n t e .
Após a execução de cada i n s t r u ç ã o , o Executor s a l v a os conteúdos dos r e g i s t r a d o r e s modificados e dos i n d i c a d o r e s
CARRY
ou OVERFLOW, quando a i n s t r u ç ã o os a f e t a ( v e r MITRA 1 5
-
Manuel de ~ r é s e n t a t l o n ) . Antes de devolver o c o n t r o l e ao D i s t r i b u i d o r , o Executor v e r i f i c a s e o novo v a l o r de {CTPROG e s t á d e n t r o dos l i m i -t e s da á r e a u t i l i z a d a da LPS a t u a l , e s e não e s t i v e r , c o l o c a uma i n d i c a ç ã o de e r r o no Indexador.
SUPERVISOR
O S u p e r v i s o r
é
a p a r t e do Sistema r e s p o n s á v e l pelo seu c o n t r o l e . Como c o n t r o l a d o r o S u p e r v i s o r deve d e t e r m i n a r s o b r e que programa o S i s t e m a p a s s a r á a a t u a r , e de que maneira s e r á e x e r c i d a e s t a ação.O programa
6
determinado a t r a v é s do "MAIN-LOOP", ' en-quanto a ação a s e r executada s o b r e o programa
é
determinada p e l o s e u c o n t e x t o , mais e s p e c i f i c a m e n t e , p e l o s e u STATUS.~ l é m
d a s funções acima mencionadas o S u p e r v i s o r con-
t r o l a a s e n t r a d a s e s a i d a s de cada programa, assim como i n i c i a econ-
t r o l a a s e n t r a d a s e s a i d a s do S i s t e m a .
F i n a l m e n t e , o S u p e r v i s o r a n a l i s a e e x e c u t a o s coman
-
dos do S i s t e m a , a l t e r a n d o o c o n t e x t o do programa quando f o r n e c e s s ã-
r i o . Esquematicamente o S u p e r v i s o r a p r e s e n t a - s e como n a F i-
g u r a a b a i x o : SUPERVISORI
I
MAIN-LOOPI
I
I
A DISTRIBUIDOR DOS COMANDOSCONTEXTO DE UM PROGRAMA
O c o n t e x t o de um programa
é
o c o n j u n t o d e a p o n t a d o r e s e campos de t r a b a l h o , que o descrevem em um i n t e r v a l o d e tempo.O S i s t e m a c o n s i d e r a , que o s programas podem a s s u m i r d o i s e s t a d o s b á s i c o s d i s t i n t o s :
-
INTERPRE-TAÇÃO eO c o n t e x t o de um programa no e s t a d o d e n ã o - i n t e r p r e t a
-
ção (montagem, a l t e r a ç ã o ou decompilação) d e s c r e v a a s e ç ã o comum(CDS), e a s e ç ã o l o c a l (LDS e LPS) s o b r e a q u a l o S i s t e m a e s t á atuan
-
do. No e s t a d o d e i n t e r p r e t a ç ã o , além d e d e s c r e v e r a s e ç ã o connjn(CD3) e a s e ç ã o l o c a l (LDS e LPS) que e s t á sendo i n t e r p r e t a d a , o c o n t e x t o armazena o c o n t e u d o dos r e g i s t r a d o r e s e o e s t a d o dos i n d i c a d o r e s do programa.O c o n t e x t o de um programa pode s e r m o d i f i c a d o , de mo- do a r e f l e t i r a nova s i t u a ç ã o do programa, após o S i s t e m a t e r a t u a - do s o b r e o mesmo.
Observe-se que o i n t e r v a l o de tempo acima mencionado
é
d i r e t a m e n t e d e p e n d e n t e da a ç ã o sendo e x e r c i d a s o b r e o programa. E s t e i n t e r v a l o pode s e r o tempo d e c o r r i d o p a r a :-
~ n á l i s e e montagem d e uma d i r e t i v a ou i n s t r u ç ã o ;-
P r e p a r a ç ã o de um B u f f e r p a r a a d e c o m p i l a ç ã o ;-
A l t e r a ç ã o de uma s e ç ã o ;-
I n t e r p r e t a ç ã o de uma i n s t r u ç ã o ; sendo p o r t a n t o , extremamente v a r i ã v e l .ORGANIZAÇÃO E MANIPULAÇÃO DOS CONTEXTOS
0 s c o n t e x t o s são manipulados p e l o S u p e r v i s o r a t r a v é s de um conjunto de apontadores e i n d i c a d o r e s , e estã.0 organizados de modo a q u e , apenas o c o n t e x t o do programa s o b r e o q u a l o Sistema pas
-
s a r a a a t u a r ,
é
copiado na zona d i r e t a m e n t e a c e s s í v e l da CDS. Na zo-
na i n d i r e t a m e n t e a c e s s í v e l da CDS enc0ntr.a-se o c o n t e x t o de cada um dos programas capazes de e x i s t i r no Sistema. Antes de abandonar um programa o S u p e r v i s o r c o p i a o s e u c o n t e x t o ( d i r e t a m e n t e a c e s s í v e l )na p o s i ç ã o c o r r e s p o n d e n t e da zona i n d i r e t a m e n t e a c e s s í v e l da CDS.
O c o n t e x t o de cada programa e s t á d i v i d i d o em duas p a r t e s :
-
c o n t e x t o a t u a l-
c o n t e x t o a n t e r i o re n d e r e ç a v e i s p o r um p a r de apontadores armazenados em uma Tabela (TABCTX)
.
O c o n t e x t o a t u a l
6
aquele que s e r á copiado na zona d i-
retamente a c e s s í v e l da CDS quando o Sistema p a s s a r a a t u a r s o b r e o programa.O c o n t e x t o a n t e r i o r poderá e x i s t i r apenas no estado de n ã o - i n t e r p r e t a ç ã o quando alguma a l t e r a ç ã o ou decompilação e s t i v e r - em c u r s o . Neste caso a s duas p a l a v r a s que compõe o c o n t e x t o a n t e r i o r armazenam #APQPRT e ~ S T A T U S da s e ç ã o p a r a onde o s i s t e m a deve r e t o r
-
n a r f i n d a a a l t e r q s ã o ou decompilação. Quando nenhuma a l t e r a ç ã o e s-
A F i g u r a a p r e s e n t a uma v i s ã o g l o b a l do c o n t e x t o c u j a manipulação passamos a d e s c r e v e r :
O i n d i c a d o r MIXNUM assume um dos v a l o r e s 0 , 4 , 8 , 1 2 e s e r v e de indexador p a r a a t r a v é s APTCTX acessarmos a t a b e l a TABCTX d a q u a l obtemos os apontadores de c o n t e x t o a t u a l (APTAL) e c o n t e x t o a n t e r i o r (APTANT) do programa.
través
APTAL podemos t r a z e r o c o n t e x t o do programa da zona indi.retamente a c e s s í v e l da CDS p a r a a zona d i r e t a m e n t e aces-
s í v e l da CDS e v i c e - v e r s a .a través
APTANT podemos f a z e r o programa r e t o r n a r a s e-
cão que e s t a v a sendo montada quando o s i s t e m a recebeu um comando de a l t e r a ç ã o ou decompilação.O Analisador armazena a p a r t e r e f e r e n t e a cada s e ç ã o ( g e r a l ou l o c a l ) do programa na e n t r a d a correspondente da P R T , e em p a l a v r a s r e s e r v a d a s da p r ó p r i a s e ç ã o ( v e r A n a l i s a d o r
-
P a r t e I ) . De-
v i d o a i s t o , no e s t a d o de n ã o - i n t e r p r e t a ç ã o o S u p e r v i s o r6
capaz d e r e c r i a r o c o n t e x t o de qualquer s e ç ã o , a p a r t i r dos v a l o r e s d e t e r m i - nados p a r a ~ A P Q P R T e ~ S T A T U S . R mudança de s e ç ã o d u r a n t e a i n t e r p r e t a ç ã o do p r o g r a - ma f e i t a p e l o p r ó p r i o I n t e r p r e t a d o r a p a r t i r dos v a l o r e s d e t e r m i - nados p a r a #APQPRT e ~ C T P R O G .SECROT
STATUS
{>
TABCTX
DESCRI ÇÃO DO CONTEXTO
O c o n t e x t o de um programa
6
composto d e 1 8 p a l a v r a s c o n s e c u t i v a s d a memória. Algumas p a l a v r a s do c o n t e x t o assumemsig
n i f i c a d o s d i s t i n t o s dependendo do e s t a d o do programa, conforme a T a
-
b e l a a b a i x o :Apontador p a r a o e n d e r e ç o z e r o do programa,
I
EXTAC I Armazena o c o n t e u d o da e x t e n s ã o do acumulador
DESLOC
d u r a n t e a i n t e r p r e t a ç ã o do programa.
Armazena o v a l o r do deslocamento r e l a t i v o i n i c i o da á r e a d e dados da s e ç ã o ( g e r a l ou 10
-I
c a l ) , que e s t á sendo montada.Aramzena o c o n t e u d o do acumulador d u r a n t e a i
nl
t e r p r e t a ç ã o do programa.
I
APTRAB Apontador p a r a o próximo e n d e r e ç o d i s p o n í v e ld a á r e a d e dados d a s e ç ã o ( g e r a l ou 1 o c a l ) a u e e s t á sendo montada.
I N D B X Armazena o c o n t e u d o do i n d e x a d o r d u r a n t e a i n t e r p r e t a ç ã o do programa.
-I
I N D I C Armazena o conteudo dos i n d i c a d o r e s CARRY eOVERFLOW (BYTES O e 1 d a p a l a v r a , r e s p e c t i v a - mente) d u r a n t e a i n t e r p r e t a ç ã o do p r o c e s s o .
NOME APTCDS VAXCDS CDSLIM APRCDS PRTLIM APDCDS APTLDS APTLPS - - CTPROG Apontador p a r a o endereço z e r o da T a b e l a de No
4
mes da CDS do programa.Apontador p a r a o próximo endereço d i s p o n í v e l ( p a r a um nome d e f i n i d o na T a b e l a de Nomes daCDS
I
do programa, d u r a n t e a n ã o - i n t e r p r e t a ç ã o .Apontador p a r a o endereço l i m i t e u t i l i z a d o
"1
á r e a de dados comuns do programa, d u r a n t e a i n-I
t e r p r e t a ç ã o .Apontador p a r a o pr6ximo endereço disponível pa r a um nome n ã o - d e f i n i d o n a T a b e l a de Nomes
al
CDS do programa, d u r a n t e a n ã o - i n t e r p r e t a ç ã o .
Apontador p a r a o endereço l i m i t e u t i l i z a d o da PRT do programa, d u r a n t e a i n t e r p r e t a ç ã o .
Apontador p a r a o endereço z e r o da á r e a d e da-1 dos comuns do programa.
Apontador p a r a o endereço z e r o da T a b e l a de
NA
mes d a LDS a t u a l do programa.I
-
Apontador p a r a o endereço z e r o da LPS a t u a l do
programa.
I
Apontador p a r a o endereço da próxima i n s t r u ç ã o
a
montar, decompilar ou i n t e r p r e t a r daLPS a t u a lNOME APDLDS VARAUX LDSLIM APTROT LPSLIM SECROT APQPRT DESCRIÇÃO
I
Apontador p a r a o e n d e r e ç o z e r o d a á r e a de da- d o s d a LD-S a t u a l .do programa. Apontador p a r a o e n d e r e ç o d i s p o n í v e l p a r a um nome d e f i n i d o na T a b e l a d e Nomes daLDSI
a t u a l do programa, d u r a n t e a n ã o - i n t e r p r e t a-I
ç ã o . Apontador p a r a o e n d e r e ç o l i m i t e u t i l i z a d o á r e a de dados da LDS a t u a l do programa, d u r a t e a i n t e r p r e t a ç ã o . Apontador p a r a o próximo p a r a um nome nome de s e ç ã o LDS a t u a l do t a ç ã o.
-- - -- Apontador p a r a o e n d e r e ç o l i m i t e u t i l i z a d o n a LPS a t u a l do p r o g r a m a , d u r a n t e a i n t e r p r e t a ç ã o . Armazena o c o n t a d o r d e s e ç õ e s chamadas n a LPS a t u a l (BYTE O d a p a l a v r a ) e o c o n t a d o r der8-
I
t u l o s r e f e r e n c i a d o s n a LPS a t u a l (BYTE 1 da-
l a v r a ) . Apontador p a r a o e n d e r e ç o da PRT c o r r e s p o n d e n4
t e a s e ç ã o a t u a l do programa.I
COMANDOS DO SISTEMA PALAVRA 3 4 Visando p e r m i t i r uma c o m u n i c a ~ ã o f á c i l e n t r e o s u s u á
-
r i o s e o S i s t e m a e x i s t e um c o n j u n t o de comandos c u j a s i n t a x e e s e - m â n t i c a s e r ã o a p r e s e n t a d a s a s e g u i r . SI NTAXE NOME STATUS O s comandos do S i s t e m a s ã o d e f o r m a t o f i x o e c a r a c t e-
DESCRIÇAOArmazena o e s t a d o a t u a l do programa. O Anexo I d e s c r e v e detalhadamente o s s u b - e s t a d o s p o s s l ' v e i s d e n t r o d e c a d a e s t a d o .
r i z a d o s p e l o c a r a t e r " I " n a c o l u n a 0 . O nome do comando começa n a
c o l u n a 2 e o s p a r â m e t r o s (quando houver) i n i c i a m n a c o l u n a 6. NOTA: O c a r a t e r )5 r e p r e s e n t a um e s p a ç o .
<alterador-geral3
; := C D S<parãmetro-geral>
: :=<expressão-delimitadora><alterador-local>
: := L D S <par~metro-local>::=<nome-seção-dados><expressão-delimitadora~<alterador-programa>::=
L P S<parâmetro-programa>
: : = ~ n o m e - s e ç ã o - p r o g r a m a ~ < e x p r e s s 5 0 - d e l i m i t a d o ~ <nome-seção-dados>::qnomede
L D Scom 6 caracteres ajustados a es-
querda)
<nome-seção-programa>::=Cnome
de
L P Scom 6 caracteres ajustados a
esquerda3
<expressão-delimitadora> : :=<delimitador><expressáo>
<delimitador>
: :=<inteiro-256,
<expressão>::=+<inteiro-25611-<inteiro-256>
<inteiro-256>::=Cinteiro
maior ou igual a zero e menor que 256)
< c o m a n d o - d e c o m p i l a d o r ~ : : = ~ d e c o m p i l a d o r ~ ~
< d e c o m p i l a d o r ~ ~ p a r â m e t r o ~
<decompilador>
: : =LST
I
PCH<parâmetro>
: : = C D SI
nome-seção-dados>1
LPS~cnome-seção-programa>
ALO
-
Este comando permite ao usuário criar um programa asso-
ciando-o ao terminal.
O programa criado passa a aguar-
dar a diretiva
C D S ,pelo teclado ou por fita de
papel
(ver o comando
RED).
BYE
RED
RTN
mina1 quando o comando f o r e n v i a d o , c a s o c o n t r á r i o s e r â e r r o e o comando i g n o r a d o .
Exemplo : ! ALO
-
E s t e comando p e r m i t e ao u s u á r i o d e s t r u i r o programa a s - s o c i a d o ao t e r m i n a l . O comando pode s e r e n v i a d o a qual-
q u e r momento em que o t e c 9 a d o e s t i v e r h a b i l i t a d o e não f o r e n t r a d a c a u s a d a p e l o programa ( i n t e r p r e t a ç ã o ) . Exemplo:! BYE-
E s t e comando p e r m i t e ao u s u á r i o i n f o r m a r ao s i s t e m a que d e s e j a c o n t i n u a r a execução do programa ( v e r I n t e r p r e t a-
d o r ) . Exemplo: ! GO-
E s t e comando p e r m i t e ao u s u á r i o c o n s t r u i r o programa ou p a r t e do programa, a t r a v z s e n t r a d a por f i t a d e p a p e l . Ocomando
s 6
pode s e r r e c e b i d o s e o programa e s t i v e r p r o n-
t o p a r a r e c e b e r uma d i r e t i v a d e segmentação (CDS, LDS, L P S ) ..A
f i t a s e r á l i d a a t é que s e j a e n c o n t r a d o o r e g i s-
t r o d e f i m de f i t a ou a- d i r e t i v a END. Em ambos o s c a-
s o s o u s u á r i o r e c e b e em s e u t e r m i n a l uma mensagem r e a b i-
l i t a n d o e n t r a d a p e l o t e c l a d o . Exemplo: 1 RED-
E s t e comando p e r m i t e ao u s u á r i o i n f o r m a r que concluiu a s a l t e r a ç õ e s que f a z i a no programa e q u e r r e t o r n a r ao pon t o em que s e e n c o n t r a v a quando e n v i o u o p r i m e i r o d e umaRUN C D S s é r i e d e <comando-alterador, ao s i s t e m a . Exemplo : I R T N
-
E s t e comando p e r m i t e ao u s u á r i o e x e c u t a r o programa. O comandos ó
6
a c e i t o s e o programa t i v e r p a s s a d o p e l a R O T I N A DO SEGUNDO P A S S O , sem e r r o s . Exemplo: ! .RUN-
E s t e comando p e r m i t e ao u s u ã r i o a l t e r a r a á r e a d e da- dos comuns do programa a t r a v é s um dos p r o c e d i m e n t o s-
a b a i x o r e l a c i o n a d o s , onde o < d e l i m i t a d o r > i n d i c a o no- me d e dados ap6s o q u a l s e r ã o f e i t a s a s a l t e r a ç õ e s :- s u p r e s s ã o - o s dados l o g i c a m e n t e a s s o c i a d o s com o s < i n - t e i r o - 2 5 6 , nome d e dados após o < delimitador> s e r ã o s u p r i m i d o s . Exemplo:! C D S 3 - 2 N e s t e c a s o , o q u a r t o e q u i n t o nomes d e da- d o s e os dados a e l e s a s s o c i a d o s s e r ã o s u
-
p r imidos.
- a d i ç ã o - o u s u á r i o d e s e j a a c r e s c e n t a r dados a s s o c i a - dos com i n t e i r o - 2 5 6 nomes d e dados ( O de- l i m i t a d o ré
i r r e l e v a n t e n e s t e c a s o ) .Exemplo:! C D S 5 9 3
N e s t e c a s o ,
t r ê s
nomes d e dados p o d e r ã o s e r i n s e r i d o s e n t r e o Último nome d e dados da s e ç ã o e a d i r e t i v a FIN.LDS LPS
-
E s t e comando p e r m i t e ao u s u á r i o a l t e r a r a á r e a d e dados l o c a i s d a s e ç ã o r e f e r e n c i a d a no comando a t r a v é s um dos p r o c e d i m e n t o s a b a i x o r e l a c i o n a d o s , onde o < d e l i m i t a d o r > i n d i c a o nome de dados a p a r t i r do q u a l s e r ã o f e i t a s a s a l t e r a ç õ e s : - s u p r e s s ã o - o s dados l o g i c a m e n t e a s s o c i a d o s com o s < i n - t e i r o - 2 5 6 > nomes d e dados após o d e l i m i t a-
d o r s e r ã o s u p r i m i d o s .Exemplo: 1 LDS SEÇÃO 8 - 2
N e s t e c a s o o nono e décimo nomes d e dados e o s dados a e l e s a s s o c i a d o s s e r ã o s u p r i m i d o s . - a d i ç ã o - o u s u á r i o d e s e j a a c r e s c e n t a r dados a s s o c i a
-
d o s com < i n t e i r o - 2 5 6 , nomes de dados (O <de- l i m i t a d o r >
é
i r r e l e v a n t e n e s t e c a s o ).
Exemplo: ! LDS SEÇXO 5+3
N e s t e c a s o ,
t r ê s
nomes de dados p o d e r ã o s e r i n s e r i d o s e n t r e o Último nome d e dados d a s e-
ç ã o e a d i r e t i v a FIN.-
E s t e comando p e r m i t e ao u s u á r i o a l t e r a r a á r e a d e p r o-
grama d a s e ç ã o r e f e r e n c i a d a no comando a t r a v é s um dos p r o c e d i m e n t o s a b a i x o r e l a c i o n a d o s , onde o < d e l i m i t a d o r >i n d i c a a i n s t r u c ã o a p a r t i r d a q u a l s e r ã o f e ' i t a s a s a l - t e r a ç õ e s :
-supressão-<inteiro-256> i n s t r u ç õ e s após o < d e l i m i t a d o r > s e r ã o s u p r i m i d a s .
LST
PCH
Exemplo: I - a d i ç ã o - Exemplo::
LPS PROGRA20-3
N e s t e c a s o a s i n s t r u ç õ e s21, 22
e23
s e r ã o s u-
p r i m i d a s . < i n t e i r o - 2 5 6 > i n s t r u ç õ e s s e r ã o i n s e r i d a s após o < d e l i m i t a d o r > .LPS. PROGRA9+3
N e s t e c a s ot r ê s
i n s t r u ç õ e s s e r ã o i n s e r i d a s en-
t r e a s i n s t r u ç õ e s nove e d e z .-
E s t e comando p e r m i t e ao u s u á r i o l i s t a r o programa ou p a r-
t e do programa. E x e m ~ l o s : ILST
I LST CDS
I LST LDS DADOS
ILST LPS PROGRA
-
E s t e comando p e r m i t e ao u s u á r i o p e r f u r a r o programa p a r t e do programa. Exemplos:!PCH
!PCH CDS
:
PCH LDS DATUM
IPCH LPS INSTRU
DISTRIBUIDOR DOS COMANDOS
A
f u n ç ã o do d i s t r i b u i d o r d o s comandosé
v e r i f i c a r av a l i d a d e do comando r e c e b i d o e p a s s a r o c o n t r o l e p a r a a r o t i n a que e s p e c i f i c a m e n t e t r a t a d e s t e comando. Se o comando f o r i n v á l i d o o
c o n t r o l e
é
devolvido ao"MAIN-LOOP"
com o a v i s o de e r r o de sintaxe. Abaixo e s t á apresentado um esquema do D i s t r i b u i d o r de Comandos e a s r o t i n a s que e l e pode chamar.DISTRIBUIDOR DOS
COMANDOS
(ALO,
BYE
,
GO
,
RED
,
RTN)
ROTINA
RUN
OTINA DE EX
CUÇÃO DO
A s e g u i r apresentamos uma d e s c r i ç ã o de cada r o t i n a .
A 1
ROTINA DE SIN
-
TAXE DO DE
-
COMPILADOR
-
LROTINA DE SIN
TAXE DO
CDS
ROTINA DE SIN
TAXE DO
LDS
ROTINA DE EXE
CUÇÃO DO
ROTINA DE EXE
.CUÇÃO DO
ROTINA DE SIN
TAXE DO
I
CDS
I
LDS
I
LPS
4ROTINA DE ! ALO
E s t a r o t i n a
é
e x e c u t a d a p e l o D i s t r i b u i d o r de Comandos e pode s e r d i v i d i d a em d o i s p a s s o s :-
SINTAXE-
nx~cuçÃo
SINTAXE
-
Se o #STATUS do programaé
d i f e r e n t e d e GF000 o con-
t r o l e6
d e v o l v i d o ao "MAIN-LOOP" com a v i s o d e e r r o de s i n t a x e .EXECUÇXO
-
A á r e a de t r a b a l h o do programaé
p r e e n c h i d a com o c a r a t e r "NULL" ( 0 0 1 , o &TATUS p a s s a a s e r ~ 0 0 0 1 eIAPQPRT
r e c e b e o v a l o r de {PROGRM.O c o n t r o l e
6
d e v o l v i d o ao "LMIN-LOOP" de modo a que, a R o t i n a d e Mensagens do S i s t e m a e n v i e um a v i s o de i n í c i o de t r a b a l h o p a r a o u s u á r i o .ROTINA DE ! BYE
E s t a r o t i n a
é
e x e c u t a d a p e l o p r ó p r i o D i s t r i b u i d o r de Comandos.O #STATUS do programa
é
f e i t o i g u a l a IF000 e o c o n t r o l eé
d e v o l v i d o ao "MAIN-LOOP" de modo a q u e , a R o t i n a de Mensagens do S i s
-
tema e n v i e um a v i s o de f i m de t r a b a l h o p a r a o u s u á r i o .R O T I N A DE ! GO E s t a r o t i n a
é
executada p e l o p r ó p r i o D i s t r i b u i d o r de Comandos e pode s e r d i v i d i d a em d o i s p a s s o s :-
SINTAXE-
EXECUÇAO
S I NTAXE-
Se o ~ S T A T U S f o r d i f e r e n t e de 4 F 0 0 3 o c o n t r o l eé
de v o l v i d o ao "MAIN-LOOP" com a v i s o de e r r o de sintaxe.EXECUÇÃO
-
O {STATUSé
modificado p a r a F,2000, o programa e n t r ana l i s t a de i n t e r p r e t á v e l . O c o n t r o l e
é
devolvido ao "MAIN-LOOP". ROTINA DE 1 RED 'c E s t a r o t i n aé
executada p e l o D i s t r i b u i d o r de Comandos e pode s e r d i v i d i d a em d o i s p a s s o s :-
SINTAXE-
EXECUÇÃOSINTAXE
-
Se os r e q u i s i t o s de /STATUS não forem a t e n d i d o s o c o n t r o l eé
devolvido ao "MAIN-LOOP" com a v i s o de e r-
r o de s i n t a x e .NOTA: No momento a t u a l o s i s t e m a MITRA 1 5 da COPPE d i s p õ e de l e i t o r a / p e r f u r a d o r a de f i t a de p a p e l apenas na console. Deste modo, s e a l e i t o r a / p e r f u r a d o r a e s t i
-
v e r o c u p a d a , o c o n t r o l e
é
d e v o l v i d o ao "MAIN-LOOP" com a v i s o d e ocupação d a l e i t o r a / p e r f u r a d o r a e o co-
mandoé
i g n o r a d o .EXECUÇÃO
-
O programaé
l o g i c a m e n t e a s s o c i a d o ao c o n s o l e d o S i s-
tema ao s e r m o d i f i c a d o o BYTE z e r o do #STATUS p a r a6 8 0 . O t e c l a d o do t e r m i n a l do u s u á r i o
é
d e s a b i l i t a-
do. O S i s t e m a6
marcado como ocupando a c o n s o l e .ROTINA DE ! RUN
A R o t i n a d e I RUN e s t á d i v i d i d a em d o i s p a s s o s :
-
SINTAXE-
EXECUÇAO
S I NTAXE
-
E
v e r i f i c a d a p e l o p r ó p r i o D i s t r i b u i d o r d e Comandos. Se o {STATUS do programaé
d i f e r e n t e d e 4F002 o con-
t r o l eé
d e v o l v i d o ao "MAIN-LOOP" com a v i s o d e e r r o de s i n t a x e .EXECUÇÃO
-
É r e a l i z a d a p o r uma s e ç ã o (ROTINA DE LINK-EDIÇÃO),
chamada ao f i m d a a n á l i s e s i n t á t i c a do comando.
A
LINK-EDIÇKO
c o n s i s t e em t r a n s f o r m a r uma e s t r u t u - r a adequada a decompilação e a l t e r a ç ã o , numa e s t r u - t u r a adequada a i n t e r p r e t a ç ã o .A ação da LINK-EDIÇÃO
é
e x e r c i d a d i r e t a m e n t e sobreas d i r e t i v a s DATA t i p o e t i q u e t a da CDS e de c a d a LDS. A s r e f e r ê n c i a s a nomes de dados ou r ó t u l o s s ã o t r a n sformadas em r e f e r ê n c i a a o s dados ou i n s t r u
-
ç õ e s . F i n a l m e n t e ,é
c r i a d o o c o n t e x t o de i n t e r p r e t a ç ã o do programa, ou s e j a : a p a r t e do c o n t e x t o r e f e r e n t e a p r i m e i r a s e ç ã o a s e r i n t e r p r e t a d aé
c o n s t r u i d a , ~ C T PROGé
p o s i c i o n a d o n a p r i m e i r a i n s t r u ç ã o a i n t e r p r e-
t a r , os campos de armazenamento dos r e g i s t r a d o r e s e i n d i c a d o r e sé
z e r a d o e o {STATUS do programaé
muda-
do p a r a 62000. ROTINA DE:
LST E:
PCH A R o t i n a de ! LST e ! PCH e s t á d i v i d i d a em d o i s p a s-
S O S :-
SINTAXE-
EXECUÇÃOSINTAXE
-
E
v e r i f i c a d a p o r uma s e ç ã o ( R o t i n a de S i n t a x e do De- compilador) chamada p e l o D i s t r i b u i d o r dos Comandos. Se o programa e s t á marcado como "sendo a l t e r a d o l ' ( p a-
l a v r a 10 do programa-
v e r A n a l i s a d o r - P a r t e I ) o con-
t r o l eé
d e v o l v i d o ao D i s t r i b u i d o r de Comandos com a v i s o de e r r o de s i n t a x e . Se a decompilação6
p a r c i a l ( d e uma LDS ou LPS) e a s e ç ã o r e f e r e n c i a d a não e x i s t e o c o n t r o l e6
d e v o l v i - do ao D i s t r i b u i d o r de Comandos com a v i s o de e r r o des i n t a x e . A s i n t a x e e s t a n d o c o r r e t a o s v a l o r e s de ~ A P Q P R T e ~ S T A T U S s ã o armazenados no c o n t e x t o a n t e r i o r do pro
-
grama. É c r i a d o um c o n t e x t o a t u a l p a r a o programa e o ~ S T A T U Sé
p o s i c i o n a d o como i n d i c a d o no Apêndi- c e 1. O t e c l a d oé
d e s a b i l i t a d o . NOTA: A s o b s e r v a ç õ e s f e i t a s q u a n t o a l e i t o r a / p e r f u r a d o r a de f i t a de p a p e l no comando i RED também s ã o v á l i - d a s p a r a i PCH.-
É r e a l i z a d a p o r uma s e ç ã o ( D i s t r i b , u i d o r ) c h a m a d a p e-
10 "MIIN-LOOP" ao f i m d e c a d a i m p r e s s ã o ou p e r f u r a-
ç ã o .A
decompilação d e um p r o c e s s o anda em p a r a l e l o com o A n a l i s a d o r e I n t e r p r e t a d o r .O f i m d e uma decompilação
é
d e t e r m i n a d a p e l a combi-
nação do #STATUS com o a p o n t a d o r de l i m i t e d a s e - ç ã o , p.
ex.IVARAUX
.
Se a decompilação t e r m i n a d aé
p o r p e r f u r a ç ã o ,um61
-
timo r e g i s t r oé
p e r f u r a d o como i n d i c a ç ã o d e f i m de a r q u i v o p a r a o m o n i t o r do MITRA 1 5 ( v e r MITRA.15-
Manuel d e P r e s e n t a t i o n ) . Ao fim d a decompilação o c o n t e x t o a n t e r i o ré
u t i l i-
zado p a r a r e c r i a r o c o n t e x t o a t u a l ao tempo do co- mando d e c o m p i l a d o r . O t e c l a d oé
r e a b i l i t a d o .INSERÇÃO
-
O processamento de i n s e r ç ã oé
b a s t a n t e s i m p l e s . A r o t i n a a b r e e s p a ç o p a r a a s novas d i r e t i v a s a t r a-
v ê s s u p r e s s ã o d a d i r e t i v a FIN (comandos ! CDS,! LDS) e p a r a novas i n s t r u ç õ e s a t r a v é s um deslocamento d a s que vem após a q u e l a i n d i c a d a p e l o < d e l i m i t a d o r > .A á r e a onde s e r ã o f e i t a s a s i n s e r ç õ e s
é
p r e e n c h i d a com o c a r a t e r "NULL" (00) e o ~ S T A T U S p o s i c i o n a d o p a-
r a a f a s e de montagem c o r r e s p o n d e n t e ao comando. O c o n t r o l e6
d e v o l v i d o ao "bAIN-LOOP" e a s inserções s e r ã o f e i t a s p e l o s i s t e m a de montagem n o r m a l , a t r a - v é s o A n a l i s a d o r .SUPRESSOES
-
O processamento de s u p r e s s ã oé,
p o r o u t r o l a d o , b a s-
t a n t e complexo. Consideremos a s s u p r e s s õ e s numa LDS. A s u p r e s s ã o d e nomes d e f i n i d o s numa LDS i m p l i c a em v e r i f i c a r s e e x i s t e r e f e r ê n c i a a e s t e s nomes n a LPS c o r r e s p o n-
d e n t e . A r e f e r ê n c i a a algum dos nomes i m p l i c a em d e v o l u ç ã o do c o n t r o l e a R o t i n a d e S i n t a x e c o r r e s p o n-
d e n t e com o a v i s o d e s u p r e s s ã o não r e a l i z a d a .Cada um dos nomes s u p r i m í v e i s devem s e r p e s q u i s - a d o s
na
T a b e l a de Nomes d a CDS e a r e f e r ê n c i a a algum d e-
l e s deve t e r o s e u t i p o t r o c a d o p a r a e x t e r n o l o c a l . Cada nome s u p r i m i v e lé
v e r i f i c a d o quanto a r e f e r ê n - c i a a e i e em d i r e t i v a DATA t i p o e t i q u e t a . Se hou-
v e r o nome ê t o r n a d o não d e f i n i d o e a r e f e r ê n c i a mo-
d i f i c a d a p a r a s u a nova p o s i ç ã o .a s s o c i a d o s , a T a b e l a d e Nomes da LDS
é
r e a l o c a d a e o argumento de t o d a s a s i n s t r u ç õ e s com r e f e r ê n c i a a o s nomes r e a l o c a d o s s ã o a j u s t a d o s a nova s i t u a ç ã o . Da mesma forma a s r e f e r ê n c i a s a o s nomes r e a l o c a d o s d e n t r o d e d i r e t i v a s DATA t i p o e t i q u e t a devem s e r a j u s t a d a s p a r a a s novas p o s i ç õ e s .A s u p r e s s ã o de nomes d e f i n i d o s d a CDS p r o c e s s a - s e d e forma i d ê n t i c a a e x p o s t a a c i m a , porém a v e r i f i - c a ç ã o dos nomes
é
mais t r a b a l h o s a , uma vez que de- v e s e r f e i t a em cada LDS (em d i r e t i v a s DATA t i p o ETIQUETA) e em c a d a LPS.A s u p r e s s ã o de i n s t r u ç õ e s
é
p r e c e d i d a p e l a m o d i f i - cação do r ó t u l o de c a d a i n s t r u ç ã o s u p r i m í v e l ( com r ó t u l o ) de r ó t u l o d e f i n i d o p a r a r ó t u l o não definido. F i n a l i z a n d o uma r o t i n a de s u p r e s s ã o o s nomes não d e f i n i d o s s ã o v e r i f i c a d o s q u a n t o a r e f e r ê n c i a em alguma d i r e t i v a DATA t i p o e t i q u e t a sendo que osr6
-
t u l o s s ã o v e r i f i c a d o s q u a n t o a r e f e r ê n c i a e m a l g u - ma i n s t r u ç ã o . A não e x i s t ê n c i a de q u a l q u e r r e f e
-
r ê n c i a a um nome não d e f i n i d o i m p l i c a em s u a supres-
s ã o .O #STATUS do programa
é
sempre c o l o c a d o em EF004 rnuma s u p r e s s ã o .
ROTINA DE ! RTN
Comandos e pode s e r d i v i d i d a em d o i s p a s s o s :
-
SINTAXE-
EXECUÇWO
S INTAXE
-
Se o programa não e s t á marcado como "sendo a l t e r a d o " o c o n t r o l eé
d e v o l v i d o ao "MAIN-LOOP" com o aviso d e e r r o d e s i n t a x e .-
O c o n t e x t o a n t e r i o ré
u t i l i z a d o p a r a c o n s t r u i r ocon-
t e x t o a t u a l p a r a a s e ç ã o sendo montada ao tempo do p r i m e i r o comando a l t e r a d o r .C O ~ N T A R I O S
-
Ao s e r r e c e b i d o um novo comando a l t e r a d o r ou o co-
mando ! RTNé
f e i t o um t r a b a l h o d i r e t o s o b r e a s e - ç ã o (comum ou local(LDS e LPS) ) a l t e r a d a d e modo a não h a v e r b u r a c o s n a e s t r u t u r a do programa. O s cam-
pos r e s e r v a d o s d a s e ç ã o u t i l i z a d o s p a r a r e c r i a r s e uc o n t e x t o s ã o t o d o s a j u s t a d o s a nova s i t u a ç ã o .
Se uma d i r e t i v a FIN t i v e r s i d o s u p r i m i d a
é
f o r ç a d o o #STATUS EF005 do q u a l o programa s a i somente quan-
do a d i r e t i v a FIN s u p r i m i d aé
r e c r i a d a .Um programa pode s e r a l t e r á v e l em q u a l q u e r p o n t o da montagem, sempre que o programa e s t i v e r e n t r a n d o p g
ROTINA. DE MENSAGENS DO SISTEMA
A R o t i n a d e Mensagens e s t á s u b o r d i n a d a ao S u p e r v i s o r , que a u t i l i z a quando tem que d a r ao u s u á r i o um a v i s o s o b r e uma o c o r
-
r é n c i a em s e u programa. Uma o c o r r ê n c i a pode s e r um a v i s o d e i n í c i o ou f i m de t r a b a l h o ou uma p e r g u n t a s e o u s u á r i o q u e r c o n t i n u a r ai n
-
t e r p r e t a r s e u programa, ou um e r r o o c o r r i d o no programa. P a r a os er-
r o s o S u p e r v i s o r r e c e b e do A n a l i s a d o r e do I n t e r p r e t a d o r a informa- ç ã o d e que o c o r r e u um e r r o e j á no i n d e x a d o r a e n t r a d a p a r a o t i p o d e e r r o o c o r r i d o . A s mensagens a s e r d a d a s ao u s u á r i o vem p r e c e d i d a d e d o i s a s t e r i s c o s e s e encontram n a T a b e l a d e Mensagens do Sistema,ocu-
pando uma p a l a v r a p a r a c a d a mensagem.A s mensagens E 1 (Endereço
-
-
~ n v á l i d o ),
N I (Nome-
-
I n d e f i - n i d o ) e O 1 (Operando-
-
~ n v ã l i d o ) s ã o s e g u i d a s do número da s e ç ã o (LDSe LPS) onde o c o r r e u o e r r o .
A s e g u i r a p r e s e n t a r e m o s a T a b e l a d e Mensagens com s u a d e s c r i ç ã o .
TABELA DE MENSAGENS DO SISTEMA
( C o n t i n u a r Execução) - P e r g u n t a s e o usuário que c o n t i n u a r a i n t e r p r e t a r o programa SIM 1 GO
MENSAGEM DESCRIÇÃO
(Console
-
-
Ocupado)-Avisa que o c o n s o l e e s t á acu-
pado p o r o u t r o programa.( E s t o u r o
-
d a Area d e-
Dados) - D i r e t i v a não a c e i - t a , não tem e s p a ç o p a r a o s dados.(Endereço
-
-
I n v á l i d o ) - ~ e n t a t i v a d e m o d i f i c a r i n s-
t r u ç ã o ou e n d e r e ç o f o r a d e l i m i t e s .( E s t o u r o
-
n a Area d e-
Nomes d e Dados) - D i r e t i v a não a c e i t a , não tem e s p a ç o p a r a nome d e d a d o s ,( E s t o u r o
-
d a h r e a do-
programa) - I n s t r u ç ã o não a c e i t a , não tem e s p a ç o p a r a i n s t r u ç ã o .( E s t o u r o
-
d a Area d a P R T ) - D i r e t i v a-
de Segmenta ção não a c e i t a , não tem espaço p a r a o u t r a s e - ç ã o .( E r r o
-
d e-
S i n t a x e ) - e r r o d e s i n t a x e da d i r e t i v a o u ' i n s t r u ç ã o ou comando do s i s t e m a .(Fim
-
d e Trabalho)-Terminou a execução do p r o - grama ou f o i r e c e b i d o o comando 1 BYE.( I n í c i o
-
d e-
~ r a b a l h o ) -1ni'cio d e um programa , f o i r e c e b i d o o comando I ALO.(Nome Indefinido)-Nomes d e dados ou r ó t u l o s de
-
-
programas ou nomes d e s e ç õ e s não d e f i n i d o s .ENTRADA
2 2
2 4
2 6
MENSAGEM
(Operando
-
-
I n v á l i d o ) -Modo d e endereçamentov á l i d o , i n s t r u ç ã o
s ó
a c e i t a operando d e endei
r e ç o PAR.
I
( S u p r e s s ã o
-
-
Não R e a l i z a d a ) -Um comando a l t e r a - d o r t e n t o u s u p r i m i r um nome r e f e r e n c i a d o n a LPS. O programa e s t á n a s e ç ã o r e f e r e n c i a d a n e s t e comando. Nenhum nome f o i s u p r i m i d o .(Termine
-
a-
Seção) -Uma s e ç ã o f o i a l t e r a d a co s u p r e s s ã o d a d i r e t i v a FI'N. O u s u á r i oé
do a r e c o l o c a r a d i r e t i v a FIN.
OBSERVAÇÃO: A s mensagens a q u i a p r e s e n t a d a s s ã o a s que f i c a m , q u a n
-
do t i v e r m o s a p l e n a c e r t e z a que o S i s t e m a i m p l a n t a d o não p o s s u i r mais e r r o . Frisamos q u e , no momento d a i m p l a n t a ç ã o , d e v e r á o c o r r e r e r r o s d o ~ r Ó p r i o s i s t e m a e s e r á n e c e s s á r i o c r i a r mensagens que nos ajudem a d e p u r á - l o .MAIN-LOOP
O "MAIN-LOOP"
6
a p a r t e r e s p o n s á v e l p e l o "TIME-SHARING" do Sistema. Podemos c o n s i d e r á - l o como d i v i d i d o em duas p a r t e s p r i n-
c i p a i s . A p r i m e i r a i n i c i a l i z a o S i s t e m a , dando v a l o r e s ao #PROGRM d e c a d a programa, z e r a n d o t o d o s o s #STATUS e i n i c i a n d o uma l e i t u r ap a r a todos os t e r m i n a i s . A segunda
6
e f e t i v a m e n t e o "MAIN-LOOP",
p o i s6
a que c o n t r o l a o Sistema. E s t e c o n t r o l eé
e x e r c i d o com o au-
x í l i o de duas l i s t a s :a ) L i s t a das E n t r a d a s e s a í d a s b) L i s t a dos Programas
O esquema anexo r e p r e s e n t a o c o n t r o l e d e s t a s l i s t a s . Observa-se que os programas p r o n t o s p a r a i n t e r p r e t a ç ã o
s ó
serão exe-
cutados quando todas as e n t r a d a s e s a í d a s e s t i v e r e m pendentes.P a r a cada l i s t a e x i s t e um p a r de apontadores. O apon t a d o r denominado d e ATUAL, aponta o próximo programa a s e r a n a l i s a do em termos de e n t r a d a e s a í d a ou execução. O apontador denomina
-
do de OLD, aponta o Último programa a t e n d i d o em termos de e n t r a d a e s a í d a ou execução.ATUAL (EXEC