Sunteți pe pagina 1din 8

Universidade de Vila Velha - UVV Curso de Cincia da Computao Turma CC5M Teoria da Computao

MQUINA DE 3 REGISTRADORES

Vila Velha 2013 LORRAN PEGORETTI LUIZ MARCON

MQUINA DE TRS 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.

Vila Velha 2013

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

1.0 - Descrio da mquina

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

2.0 - Funes e testes


Comando ATT Descrio Funes Atribui um nmero inteiro ou um registrador a outro registrador. Soma um nmero inteiro ou um registrador a outro registrador. Subtrai um nmero inteiro ou um registrador de outro registrador. (Registrador, Inteiro) (Registrador, Registrador) ADD (Registrador, Inteiro) (Registrador, Registrador) SUB (Registrador, Inteiro) (Registrador, Registrador) 1 Parmetros

PRT SCN JMP TEQ

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

3.0 - Programa testado


Para o teste de funcionamento da mquina foi usado um programa que multiplicaria dois valores, os mesmos indicados pelo usurio e armazenados em dois registradores. Aps esta etapa, a mquina ir multiplicar esses valores e armazenar o resultado em um terceiro registrador. Onde a notao 'a<-b,c', significa que um registrador 'a' recebe a sada do programa que tem por entrada os registradores 'b' e 'c'. O programa salvo em arquivo com extenso .teste. Segue o programa:

4.0 - Cdigos da mquina


4.1 - Declarao de variveis Arquivo 'variaveis.c'.

4.2 - Interface das funes Arquivo 'input.h'.

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 'carregaInput' responsvel por carregar o arquivo .teste para a memoria.

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.

S-ar putea să vă placă și