/* Pontificia Universidade Catolica do Rio Grande do Sul Projeto PISH Sub-projeto Prototipacao Responsavel: Prof. Ney Calazans Implementacao de uma Unidade Logica e Aritmetica (ULA) de 16 operacoes Autores: Cicero Zanoni Eduardo Augusto Bezerra Luciano Minuzzi Data da ultima alteracao: 09/05/96 Alterado por: Luciano Soares Minuzzi */ const dw = 4; const aw = 1; void main(chan (in) STDIN : dw, chan (out) STDOUT : dw) { int a, b, c, m, f : dw; while(m <= 1) { do { STDIN ? a; STDIN ? b; STDIN ? c; STDIN ? m; if ((m <- aw) == 1) { case(c) { 0 : f = ~a; 1 : f = ~(a & b); 2 : f = ~a | b; 3 : f = 1; 4 : f = ~(a | b); 5 : f = ~b; 6 : f = ~(((~a) & b) | (a & (~b))); 7 : f = a | ~b; 8 : f = ~(a) & b; 9 : f = ((~a) & b) | (a & (~b)); 10 : f = b; 11 : f = a | b; 12 : f = 0; 13 : f = a & (~b); 14 : f = a & b; 15 : f = a; } } else case(c) { 0 : f = a - 1; 1 : f = (a & b) - 1; 2 : f = (a & (~b)) - 1; 3 : f = - 1; /* complemento 2 ??*/ 4 : f = a + (a | (~b)); 5 : f = (a & b) + (a | (~b)); 6 : f = a - b - 1; 7 : f = a | (~b); 8 : f = a + (a | b); 9 : f = a + b; 10 : f = (a & (~b)) + (a | b); 11 : f = a | b; 12 : f = ~a; /* + (a << 1);*/ 13 : f = (a & b) + a; 14 : f = (a & (~b)) + a; 15 : f = a; } }while(m <= 1); STDOUT ! f; } }