Mudancas Recentes - Buscar:

Principal

 Objetivos  
 Ementa  
 Livros 

OAC

LOAC

Professores:

  JOSEANA
  ELMAR

CONTATO

CRÉDITOS

editar



OAC /

CompiladorMK

Compilador ManoKime

O compilador foi desenvolvido para mapear um subconjunto da linguagem C em código máquina do processador Mano&Kime, desenvolvido na disciplina. Ele aceita um arquivo como entrada e imprime o código assembly a ser utilizado no processador.

Restrições:

  • Todas aquelas da linguagem C, ou seja, por exemplo não tem OO.
  • O programa só pode ter a rotina main();
  • Só podem ser declaradas 63 variáveis, as quais só podem ser inteiros (int);
  • A faixa de valores que podem ser atribuídos diretamente a uma variável ou utilizados em uma operação é [-64:63];
  • É possível atribuir a uma variável expressões aritméticas, mas somente utilizando operadores de soma(+), subtração/negação (-). ou lógicas, (&) ,or (|) e negação (~);
  • Operações de Input/Output são permitidas utilizando a variável predefinida (io);
  • Comandos if/else e while são permitidos, utilizando uma expressão lógica como condição, essas expressões podem utilizar operadores lógicos como (==, !=, >, <, >=, <=).
  • Considerando as limitações do processador, não é possível fazer uso de parênteses, nem de operações de if e while aninhados.

Rodando o compilador:

Basta digitar o comando no terminal:
compiladorMK < arquivo.c
Exemplo:

Exemplo de programa:

main (){
	int a;
	a = 0;
	int b;
	b = 1;

	if (a > 1){
		a = 0;
	}

	a = b + 1;

	if (a == 1){
		a = 0;
	}else{
		a = 1;
	}

	a = 1 - b;
	b = 3 | a;

	while (a >= b){
		a = io;
		b = ~b; 
	}
}

Exemplo de programa com erro:

Bugs conhecidas

Tem que tirar o primeiro caractére gerada (uma cobrinha ~).

Dúvidas:

  • Adalberto Teixeira (adalberto@lad.dsc.ufcg.edu.br)
  • Andrey Menezes (andrey.menezes@gmail.com)
  • Daniel Lucena (daniel@lad.dsc.ufcg.edu.br)
© 2008 Profs. Elmar Melcher e Joseana Fechine. Monitores: Sergio Espinola e Fabricio Lelis - DSC/UFCG
Modificada em December 01, 2011, at 03:58 PM