Assunto: Re: Duvida sobre uma questão De: Ney Laert Vilar Calazans Data: Fri, 29 Jun 2007 16:32:07 -0300 Para: Carlos Caldas Oi Carlos Realmente, trata-se de uma questão simples de codificação de instruções em binário. Vejamos: 1) Instruções de 3 endereços: se em 16 bits tens de reservar 3 campos para conter endereços (3x4=12), sobram apenas 4 bits para identificar as diferentes instruções de 3 endereços. Como são 15 instruções de 3 endereços, todos exceto 1 dos 16 códigos de 4 bits são usados neste campo (chamado código da operação ou, em inglês, opcode) para identificar as instruções de 3 endereços. Por exemplo, Assumindo que End1, end2 e End3 são valores quaisquer de 4 bits representando endereços, poderíamos ter instruções de três endereços com códigos 0000End1End2End3, 0001End1End2End3, ... até 1110end1End2End3, reservando o último código de 4 bits (1111)nos 4 primeiros bits para identificar todas as demais instruções que não são de 3 endereços. 2) Instruções de 2 endereços: Dada a discussão 1) e assumindo o exemplo anterior (sem perda da generalidade), segue-se que todas as demais instruções começam com um opcode (parcial) de 4 bits 1111. Para as instruções de dois endereços tem-se que usar 8 bits para representar os ditos endereços. Logo toda instrução de dois endereços tem (no nosso exemplo) ou pode ter o formato 1111xxxxEnd1End2. Sobram apenas 4 bits para codificar cada instrução de dois endereços (os bits marcados xxxx). Como são 14 instruções, usa-se 14 dos 16 códigos de 4 bits e sobram apenas dois códigos de 4 bits para representar todas as outras instruções. Pelo mesmo raciocínio de 1), digamos que sobram 11111110 e 11111111. Ou seja, no nosso exemplo fixam-se os 7 bits mais significativos em 1 e sobram 9 bits para especificar as instruções de 0 e de 1 endereço. 3) Instruções de 1 e 0 endereços - sabendo que as de 1 endereço devem reservar 4 bits para o endereço, sobram 5 bits para identificar a instrução específica de 1 endereço, atingindo um máximo (por hora) de 32 instruções de 1 endereço, caso não existissem as de 0 endereços. Como é necessário reservar um dos 32 códigos de 5 bits para idenetificar que a instrução não é de 1 endereço, mas de 0 endereços (digamos, que no nosso exemplo reservemos 11111). Como existem 16 instruções de 0 endereços, é perfeitamente acomodar os 16 códigos nos valores 1111 1111 1111 xxxx, variando os valores de xxxx para especificar cada uma das 16 instruções (de 0 endereços). Enquanto isto, as de 1 endereço têm o formato 1111 111x xxxx End1, onde x xxxx podem valor de 0 0000 a 1 1110, ou seja, exatamente 31 códigos diferentes! O princípio é simples, mas a aplicação é convoluída. Outra forma de ver a coisa, menos chata, mas mais difícil de aplicar: a idéia é perceber que 16 bits permitem especificar 65536 códigos diferentes, mas quando se reserva campos para operandos das instruções, perde-se (2 elevado ao número de bits) códigos em campos reservados. Por exemplo, no teu caso, dos 65536 códigos de 16 bits, 15/16 avos, ou seja, 61440 códigos são usados para instruções de 3 Endereços. Entende? Sobram apenas 4096 códigos para as demais instruções. As instruções de 2 endereços "comem" mais 14*256=3584 códigos, sobrando apenas 512 códigos para as instruções de 1 Endereço e para as de 0 endereços. Como as de 0 endereços são 16, sobram 496. Como cada instrução de 1 endereço pode usar 16 endereços, dividindo 496 por 16, obtém-se exatamente 31 códigos. Este método nem sempre funciona mas quando funciona é mais rápido de aplicar. Ney Carlos Caldas escreveu: > Boa tarde Pr. Ney, > > Estou estudando arquitetura e a muito estou tentando > resolver uma questao que acredito ser simples para > vc... > > Como acho que não vai consumir mais do que 4 minutos > seu, venho atraves deste e-mail solicitar uma ajuda. e > a seguinte: > -------------------------------------------- > Uma maquina possui instrucoes de 16 bits e enderecos > de 4 bits. Do conjunto total de instrucoes 15 > referenciam 3 enderecos, 14 referenciam 2 enderecos e > 16 nao apresentam referencia a endereco. Qual e o > numero maximo de instrucoes que referenciam 1 endereco > que esta maquina pode ter? > (A) 7 > (B) 16 > (C) 31 > (D) 63 > (E) 128 > resposta correta: alternativa C > --------------------------------------------- > Agradeço desde ja > > Carlos > > > > ____________________________________________________________________________________ > Get your own web address. Have a HUGE year through Yahoo! Small Business. > http://smallbusiness.yahoo.com/domains/?p=BESTDEAL > > -- Ney Laert Vilar Calazans, Professor - Faculty of Informatics, PUCRS Address: Av Ipiranga, 6681, Bld. 32, Room 718. Porto Alegre, RS, Brazil CEP:90619-900 - Phone(Fax):+55-51-3320-3611(3621) - Ext: 8718 e-mail: calazans@inf.pucrs.br - URL: http://www.inf.pucrs.br/~calazans