Documente Academic
Documente Profesional
Documente Cultură
MQUINA DE 3 REGISTRADORES
Trabalho apresentado para avaliao na disciplina de Teoria da Computao, do curso de Cincia da Computao, turno matutino, do Centro Universitrio de Vila Velha (UVV), ministrada pelo professor Marcello Novaes.
Introduo
Estre trabalho foi feito com o propsito de desenvolver uma maquina de trs registradores, baseado na definio de uma maquina. Que consiste em uma mquina capaz de: Interpretar um programa desde que possua uma interpretao para cada operao ou teste que constitui o programa. Interpretar programas de acordo com os dados fornecidos. De suprir todas as informaes necessrias para que a computao de um programa possa ser descrita
Maquina_3_reg = (V, X, Y, X, Y, F, T)
Onde: - V, conjunto de valores de memria = { N }. - X, conjunto de valores de entrada = { N }. - Y, conjunto de valores de sada = { N }. - X, funo de entrada = { carregaInput, contaLinhas, preencheLabels, retornaValor(n) }. - Y, funo de sada = { printf(Resultado (a): %d, retornavalor(r)); }. - F, conjunto de funes presentes na mquina = { PRT, SCN, ATT, ADD, SUB, JMP }. - T, conjunto de testes presentes na mquina = { TEQ, TLT, TGT }. Sendo: r um registrador (a, b, ou c) n um registrador ( a, b ou c ) ou um nmero natural L um label definido por qualquer letra do alfabeto em maisculo seguido de :(dois pontos), exemplo: ( A: )
Imprime o valor de um registrador na tela. Faz a leitura do valor digitado pelo usurio e atribui a um registrador. Pula para a linha do label definido. Testes Verifica se dois registradores ou um registrador e um nmero so iguais, e direciona para o label desejado caso forem iguais. Verifica se um registrador menor que outro, ou menor que um nmero, caso seja, direciona para o label desejado.
(Registrador) (Registrador) (Label) (Registrador, Registrador, Label) (Registrador, Inteiro, Label) (Registrador, Registrador, Label) (Registrador, Inteiro, Label)
TLT
TGT
Verifica se um registrador maior que (Registrador, Registrador, outro, ou menor que um nmero, caso Label) seja, direciona para o label desejado. (Registrador, Inteiro, Label) Tabela 1 Funes e testes presentes na mquina
4.3 - Implementao das funes Arquivo 'input.c'. As funes 'carregaInput' e 'contaLinhas', foi desenvolvida pelo professor Marcello Novaes, e mantiveram-se sem modificaes. A funo 'contaLinhas' responsvel por contar quantas linhas tem o arquivo .teste.
A funo 'preencheLabels', responsvel por encontrar os labels definidos no arquivo .teste e inserir no vetor de inteiros (LABELS), a linha exata referente ao label.
A funo 'retornaValor' responsvel por diferenciar se o parmetro passado para as funo no arquivo .teste um nmero natural, ou um registrador do programa. Caso seja um numero natural retorna o valor do char lido no arquivo em forma de inteiro, usando a funo 'atoi' da biblioteca stdio.h
A funo 'processaInput' responsvel pelo funcionamento da mquina em si, determinando se o que lido, um teste ou um funo.
5.0 - Concluso
Com o trabalho aprendemos o funcionamento de uma mquina e de um autmato. Todo o seu processo de computao, a transformao da multiplicao para operaes mais simples como por exemplo de soma e subtrao. A definio dos conjuntos de valores de memria, dos valores de entrada, dos valores de sada, das interpretaes de operaes e de interpretao dos testes bem como as funes de entrada e as funes 7
de sada foram colocadas em prtica e fixadas no conhecimento. Verificamos que o algoritmo pensado e implementado respondeu as expectativas e retornou o resultado correto.