• Nenhum resultado encontrado

Publicações do PESC Um Sistema de Programação e Depuração Convencional para Linguagem Tipo Montador - Parte II: Supervisor e Interpretador

N/A
N/A
Protected

Academic year: 2021

Share "Publicações do PESC Um Sistema de Programação e Depuração Convencional para Linguagem Tipo Montador - Parte II: Supervisor e Interpretador"

Copied!
78
0
0

Texto

(1)

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

(2)

A minha esposa,

(3)

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.

(4)

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 e

c 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.

(5)

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

by

the

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

.

(6)

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 2

SEMKNTICA

...

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 DE

ALTERAÇAO

...

3 4 ROTINA DE RTN

...

3 6

...

COMENTARIOS

3 7 ROTINA DE MENSAGENS DO SISTEMA

...

38

(7)

...

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 -

(8)

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 do

Sistema 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".

(9)

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

o

conteúdo da próxima instrução

a

executar; armazena-o na du

-

(10)

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 do

C

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 ç ã o

6

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 .

(11)

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 r

(12)

ENDEREÇ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

o

subconjm

-

to das instruções de CSV simuladas, menos CSV

M:KEY

e 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

e

argumento

é

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.

(13)

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,

a

obtençã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

8

2.

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,

em

parte, 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:

(14)

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 l

Indexado/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

2

deve 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:

(15)

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

-

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

(16)

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

2

deve 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

(17)

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

a

esta

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.

(18)

/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

(19)

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 BITS

6

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 e

6

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 CSV

M:

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 a

6

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 com

ISTATUS

i g u a l a t;0000 e

f 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 .

(20)

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.

(21)

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 : SUPERVISOR

I

I

MAIN-LOOP

I

I

I

A DISTRIBUIDOR DOS COMANDOS

(22)

CONTEXTO 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 e

O 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 .

(23)

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 r

e 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

-

(24)

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 r

6

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 .

(25)

SECROT

STATUS

{>

TABCTX

(26)

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 assumem

sig

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 l

d 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 e

OVERFLOW (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 .

(27)

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 l

(28)

NOME 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 daLDS

I

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 de

r8-

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 n

4

t e a s e ç ã o a t u a l do programa.

I

(29)

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ÇAO

Armazena 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 .

(30)

<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>::qnome

de

L D S

com 6 caracteres ajustados a es-

querda)

<nome-seção-programa>::=Cnome

de

L P S

com 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 S

I

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).

(31)

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 . O

comando

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 uma

(32)

RUN 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 comando

s ó

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.

(33)

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 .

(34)

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 s

21, 22

e

23

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 o

t 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 : I

LST

I LST CDS

I LST LDS DADOS

I

LST 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

I

PCH 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 a

v 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

(35)

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

-

L

ROTINA 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

4

(36)

ROTINA 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 e

6

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 e

IAPQPRT

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 .

(37)

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 a

na 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ÇÃO

SINTAXE

-

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

-

(38)

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 a

6 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 a

6

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 s

(39)

formadas 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ÇÃO

SINTAXE

-

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ção

6

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 e

6

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 de

(40)

s 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 ,um

61

-

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 .

(41)
(42)

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 e

6

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 .

(43)

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 os

r6

-

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 r

numa s u p r e s s ã o .

ROTINA DE ! RTN

(44)

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 u

c 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

(45)

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 a

i 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 (LDS

e 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

(46)

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 .

(47)

ENTRADA

2 2

2 4

2 6

MENSAGEM

(Operando

-

-

I n v á l i d o ) -Modo d e endereçamento

v á l i d o , i n s t r u ç ã o

s ó

a c e i t a operando d e ende

i

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 a

(48)

p 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 s

6

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.

(49)

ATUAL (EXEC

.

) ATUAL (EXEC

.

) SEGUINTE

i

NA0 MONTAGEM /COMANDO

I

SIM

I

I

OLD (EXEC

.

) +ATUAL (EXEC

.

) TIME OVERFLOW

i

ExEcuçm

H

Referências

Documentos relacionados

v) por conseguinte, desenvolveu-se uma aproximação semi-paramétrica decompondo o problema de estimação em três partes: (1) a transformação das vazões anuais em cada lo-

Silva e Márquez Romero, no prelo), seleccionei apenas os contextos com datas provenientes de amostras recolhidas no interior de fossos (dado que frequentemente não há garantia

Em todas as vezes, nossos olhos devem ser fixados, não em uma promessa apenas, mas sobre Ele, o único fundamento da nossa esperança, e em e através de quem sozinho todas as

• Os municípios provavelmente não utilizam a análise dos dados para orientar o planejamento de suas ações;. • Há grande potencialidade na análise dos micro dados do Sisvan

Pinturas, depilatórios, unguentos mamilares, colorantes para o cabelo e até pomadas à base de vidro em pó (que, aparentemente, permitiam simular a virgindade) (Braunstein, 1990),

propriedades catalíticas Durante a digestão com subtilisina o peso molecular da enzima diminuiu de 143.000 para aproximadamente 120.000 e.. subunidades originalmente possuindo

Contudo, não é possível imaginar que essas formas de pensar e agir, tanto a orientada à Sustentabilidade quanto a tradicional cartesiana, se fomentariam nos indivíduos

6.2 Sugestões As seguintes sugestões são colocadas com o intuito de aperfeiçoar o sistema de tratamento proposto para efluentes têxteis: • Estudar a viabilidade econômica de