Trabalho 01; softare basico. aluno: Alexandre coelho
1 Introdu�cao
O trabalho consiste em implementar um m�etodo de tradu�cao de uma linguagem
de montagem simples para uma representa�cao intermedi�aria adequada para simula�cao
em uma arquitetura moderna.
2 M�etodo
A linguagem de montagem utilizada ser�a a linguagem simb�olica hipot�etica apre-
sentada em sala, consistindo em um conjunto de apenas 14 instru�coes, com programas
divididos em segmentos de c�odigo e dados. A linguagem hipot�etica nao �e sens��vel ao
caso, nao havendo diferencia�cao entre mai�usculas e min�usculas. Para cada instru�cao
da m�aquina hipot�etica, a Tabela 1 abaixo cont�em o mnem^onico, quantidade de ope-
randos, c�odigo de opera�cao utilizado na montagem, tamanho em palavras da instru�cao
montada e uma breve descri�cao da sua utilidade. As linhas nais da tabela denem as
diretivas para aloca�cao de mem�oria no segmento de dados.
Os identicadores de vari�aveis e r�otulos sao limitados em 1000 caracteres e seguem
as regras comuns da linguagem C, sendo compostos por letras, n�umeros ou o caractere
(underscore) e com a restri�cao de que o primeiro caractere nao pode ser um n�umero.
Por simplicidade, o segmento de dados deve sempre seguir a instru�cao STOP, como
ilustra o exemplo abaixo:
ROT: INPUT N1
COPY N1, N2 ; comentario qualquer
OUTPUT N2
STOP
N1: SPACE
N2: CONST -0x10
1Instru�coes
Mnem^onico Operandos C�odigo Tamanho Descri�cao
ADD 1 1 2 ACC <- ACC + MEM[OP]
SUB 1 2 2 ACC <- ACC - MEM[OP]
MULT 1 3 2 ACC <- ACC * MEM[OP]
DIV 1 4 2 ACC <- ACC / MEM[OP]
JMP 1 5 2 PC <- OP
JMPN 1 6 2 Se ACC < 0, PC <- OP
JMPP 1 7 2 Se ACC > 0, PC <- OP
JMPZ 1 8 2 Se ACC = 0, PC <- OP
COPY 2 9 3 MEM[OP2] MEM[OP1]
LOAD 1 10 2 ACC <- MEM[OP]
STORE 1 11 2 MEM[OP] <- ACC
INPUT 1 12 2 MEM[OP] <- STDIN
OUTPUT 1 13 2 STDOUT <- MEM[OP]
STOP 0 14 1 Encerrar execu�cao.
Diretivas
SPACE 0 - 1 Reservar mem�oria nao-inicializada para
armazenamento de uma palavra.
CONST 1 - 1 Reservar mem�oria para armazena-
mento de uma constante inteira de 16
bits em base decimal ou hexadecimal.
Tabela 1: Intru�coes e diretivas.
O programa de tradu�cao deve ser capaz de realizar as fases de an�alise e s��ntese,
mantendo informa�cao intermedi�aria armazenada em estruturas de dados e interrom-
pendo a execu�cao mediante a ocorr^encia de qualquer erro. A escolha apropriada de
estruturas de dados faz parte do escopo do trabalho. O tratamento de erros deve
abranger os aspectos abaixo:
� Erros l�exicos causados pela presen�ca de caracteres inv�alidos no programa de en-
trada;
� Erros sint�aticos causados pela presen�ca de linhas que desviam por qualquer mo-
tivo da gram�atica elementar vista em sala;
� Erros sem^anticos causados por declara�coes ausentes ou repetidas, desvios condici-
onais e incondicionais para endere�cos no segmento de dados, escrita em mem�oria
reservada para armazenamento de constantes e divisao por constantes inicializa-
das com valor zero. Observe que a maioria dos montadores nao restringe operan-
dos de desvios ou escritas, mas adotaremos essa restri�cao para ns did�aticos.
O programa de tradu�cao deve receber dois argumentos, um arquivo de entrada
contendo um programa em Assembly na linguagem hipot�etica e um arquivo de sa��da
2para armazenar o c�odigo objeto resultante. O formato do c�odigo objeto gerado pelo
processo de tradu�cao deve ser a simples concatena�cao de todos os inteiros de 16 bits
que representam as instru�coes e seus operandos no segmento de c�odigo, seguido por
um segmento de dados contendo todas as vari�aveis e constantes de 16 bits declaradas
no programa de entrada. Por conven�cao e apesar da diretiva SPACE nao garantir a
inicializa�cao de vari�aveis, utilizaremos o valor 0 para representar as posi�coes de mem�oria
alocadas com essa diretiva.
O programa de simula�cao deve receber um �unico argumento, o arquivo objeto
gerado pelo programa de tradu�cao. A simula�cao deve ser capaz de conservar o funci-
onamento correto do programa de entrada e encerrar execu�cao na primeira ocorr^encia
de uma instru�cao STOP. Os �unicos erros tratados pelo programa de simula�cao sao a
divisao por zero e o fornecimento de valores acima do limite de representa�cao para a
instru�cao INPUT.
3 Avalia�cao
O prazo de entrega do trabalho �e 24 de Maio de 2013. A entrega consistir�a em:
� C�odigo-fonte completo e comentado com instru�coes de compila�cao dos programas
de tradu�cao e simula�cao;
� Programas de exemplo que demonstrem o funcionamento correto dos programas
de tradu�cao e simula�cao.
A forma de entrega �e por e-mail, de prefer^encia utilizando o r�otulo [SB]. Todas
as entregas receberao mensagem de conrma�cao. O trabalho pode ser feito individu-
almente ou em dupla e ser�a premiado o trabalho que obtiver o melhor desempenho
na combina�cao total do tempo de execu�cao consumido pelas fases de tradu�cao e si-
mula�cao. A an�alise de desempenho ser�a realizada pelo professor com programas de
benchmarking sucientemente extensos, utilizando o mesmo n��vel de otimiza�cao -O2
para a compila�cao de todos os trabalhos, e apenas se aplicar�a a trabalhos que produzem
o resultado correto dos programas de benchmarking. Desta forma, a bonica�c~ao total
do trabalho �e de no m�aximo 2 pontos, divididos em at�e 2 alunos diferentes, a serem
aplicados exclusivamente na primeira prova.