Disciplina: Arquitetura de Computadores Representação de Instruções Profa. Carla Katarina de Monteiro Marques UERN Instrução Na prática, o conjunto de instruções definidos para uma determinada CPU, é sempre constituído de uma mistura de formatos diferentes, para otimizar cada caso. Para se compreender a representação das instruções podemos efetuar a análise segundo dois aspectos: Quantidade de Operandos; Modo de interpretação do valor campo operando. armazenado no Quantidade de Operandos Além dos bits do código de operação, as instruções possuem um ou mais grupos de bits chamados operandos que têm por função identificar e localizar o dado a ser processado. Quantos bits? Instruções com 3 OP ADD A,B,X SUB A,B,X MPY A,B,X DIV A,B,X (X) = (A)+(B) (X) = (A)-(B) (X) = (A)*(B) (X) = (A)/(B) X= A*(B+C*D-E/F) Instruções com 2 OP ADD A,B SUB A,B MPY A,B DIV A,B (A) = (A)+(B) (A) = (A)-(B) (A) = (A)*(B) (A) = (A)/(B) X= A*(B+C*D-E/F) Instruções com 1 OP ADD OP SUB OP MPY OP DIV OP LDA OP STR OP ACC = ACC +(OP) ACC = ACC -(OP) ACC = ACC *(OP) ACC = ACC / (OP) ACC = (OP) (OP) = ACC Modos Endereçamento O endereçamento de uma instrução é sempre realizado através do valor armazenado em PC; Todo ciclo de instrução é iniciado pela transferência da instrução para o RI; Toda instrução consiste em uma ordem codificada (Cód.Oper.) para a CPU executar uma operação qualquer sobre dados; A localização dos dados pode estar indicada explicitamente na própria instrução, por um ou mais conjunto de bits, denominados campos operando, ou implicitamente (dado armazenado no ACC, que é único). Acessando dados Questão: como especificar os operandos? Em um formato de instrução típico, o espaço de endereçamento é bem COp Endereço limitado: queremos endereçar toda a memória virtual queremos endereçar determinadas estruturas de dados mais facilmente queremos rapidez, enfim, queremos ... Modos de endereçamento Imediato Direto Indireto Registrador Indexado Deslocamento Imediato Instrução COp Operando Modo Imediato O modo mais simples de se obter um dado é indicar seu próprio valor no campo operando ao invés de buscá-lo na memória; O dado é transferido juntamente com a instrução para o RI; Utilizado na inicialização de contadores, operações com constantes matemáticas... Problema: limitação do tamanho do campo operando nas instruções, o que reduz o valor máximo a ser manipulado. Direto Instrução COp End Operando Memória Modo Direto O valor binário contido no campo operando da instrução indica o endereço da memória onde se localiza o dado; O endereço pode ser de uma célula onde o dado está contido ou o endereço de uma célula inicial, quando o dado usa várias células; É necessária uma única referência para a MP (para buscar o dado); Desvantagem: limitação de memória a ser usada conforme o tamanho do campo operando. Memória de 256 MB - ?? Bits no campo operando Indireto Instrução COp End Apontador Operando Memória Modo Indireto O valor binário do campo operando representa o endereço de uma célula, porém o conteúdo dessa célula não é o valor do dado, é um outro endereço cujo conteúdo é o valor do dado; Endereçamento duplo, mais ciclos de memória para buscar o dado; Elimina-se o problema do modo direto, pois estando o endereço armazenado na memória ele poderá ocupar mais que uma célula. Registrador Instrução COp Operando Registradores R Endereçamento por Registrador Características semelhantes aos modos direto e indireto, exceto que a célula de memória referenciada na instrução é substituída por um dos registradores da CPU; Vantagem: número menor de bits para referenciar os registradores; Tempo de Acesso ao dado é melhor; Pode ser de dois tipos: Modo direto e Modo Indireto. Modo registrador (1) Similar ao endereçamento direto, contudo o campo de endereço refere-se a um registrador em vez de memória Como há número limitado de registradores, campo de endereço (por registrador) é pequeno Não há necessidade de referências à memória maior rapidez Modo registrador (2) É importante que dados sejam mantidos nos registradores: se trazidos e levados de/para a memória ineficência! Papel do compilador e do programador em linguagem de montagem Registrador indireto Instrução COp R Operando Apontador Registradores Memória Modo registrador indireto Similar ao endereçamento indireto Operando é obtido por referência de um apontador mantido em registrador Maior espaço de endereçamento (2N) que o modo registrador Uma referência de memória a menos que o modo indireto Modo Indexado Manipular endereços de acesso a elementos de certos tipos especiais de dados: Vetores são armazenados seqüencialmente na memória e sua localização pode ser referenciada por um ponteiro que é alterado para indicar o elemento desejado; O nome indexado vem do fato que a obtenção do endereço de um dado se relacionar com seu índice. Modo Indexado Nesse modo, o endereço de cada elemento do vetor é obtido pela soma do valor do campo operando da instrução com o valor armazenado em um dos registradores da CPU (registrador-índice); A grande vantagem da técnica reside na rapidez de execução das instruções de acesso aos dados. Modo Base mais Deslocamento Utilizado com o propósito de reduzir o tamanho das instruções e facilitar o processo de realocação dinâmica de programas; Em vez de ser necessário que o campo operando tenha um tamanho correspondente à capacidade total de endereçamento da MP, basta que o endereço desejado seja obtido pela soma de um valor existente em um dos registradores da CPU com o valor contido na instrução; Dois campos na instrução substituem o operando: BASE e o Deslocamento Modo Indexado x Base mais Deslocamento A indexação é empregada quando se deseja acessar diferentes dados, com alteração do endereço, por incremento (ou decremento) do valor do registrador índice; Quando a modificação de endereço é realizada para realocação de programa, basta uma única alteração do conteúdo do registrados-base (no modo base mais deslocamento).