Você está na página 1de 5

1.

Endereçamento de registradores:

É uma técnica de acesso à memória em que os operandos são armazenados em registradores


da CPU, evitando acessos directos à memória principal.

2. Endereçamento directo:

Um endereço directo contém a localização exacta da informação na memória. É usado


quando o endereço absoluto da memória é conhecido e pode ser a cessado directamente.

3. Endereçamento imediato:

Neste tipo de endereçamento, o operando é especificado directamente na instrução, sem


referência a um endereço de memória separado.

4. Endereçamento indirecto:

O endereço contido na instrução não aponta directamente para a localização de memória


desejada, mas sim para um endereço onde está armazenado o endereço de memória real.

5. Endereçamento indirecto por registradores:

Similar ao endereçamento indirecto, mas o endereço é armazenado em um registrador em vez


de na memória.

6. Endereçamento por deslocamento:

Neste tipo de endereçamento, o operando é obtido adicionando um deslocamento (um


número constante) ao valor de um registrador de base.

7. Endereçamento relativo:

Também conhecido como endereçamento indexado, é semelhante ao endereçamento por


deslocamento, mas em vez de adicionar um deslocamento a um registrador de base, o
deslocamento é adicionado a um registrador índice, cujo valor pode variar dinamicamente.
8. Cinco questões importantes no projecto do conjunto de instruções:
 Complexidade versus eficiência: Deve-se equilibrar a complexidade das instruções
com a eficiência do processador. Instruções muito complexas podem aumentar o custo
de implementação e diminuir o desempenho.
 Conjunto de instruções adequado às necessidades da aplicação: O conjunto de
instruções deve ser projectado para atender às demandas das aplicações que serão
executadas no processador, garantindo que todas as operações necessárias sejam
suportadas de forma eficiente.
 Facilidade de programação: O conjunto de instruções deve ser projectado de maneira
que seja fácil para os programadores escreverem código eficiente e compreensível.
 Compatibilidade com versões anteriores: Ao projectar um novo conjunto de
instruções, é importante considerar a compatibilidade com versões anteriores do
processador, garantindo que o novo conjunto de instruções possa executar código
legado.
 Otimização de recursos: Deve-se otimizar o uso de recursos do processador, como
registradores e memória, para garantir um desempenho eficiente e minimizar os
custos de implementação.

9. Duas maneiras comuns de gerar a condição a ser testada em uma instrução de desvio
condicional:

 Comparação de valores: Uma maneira comum de gerar a condição é comparar dois


valores, como verificar se um valor é maior que outro, igual a outro, ou diferente de
outro. Dependendo do resultado da comparação, o desvio condicional é executado.
 Teste de sinal de um resultado: Em algumas arquitecturas, uma instrução pode gerar
um sinal de condição com base no resultado de uma operação anterior, como um
overflow, um carry ou um sinal de zero. O desvio condicional pode então ser
executado com base nesse sinal de condição.

10. Três locais possíveis para armazenar o endereço de retorno para um retorno de
procedimento:

 Pilha (stack): O endereço de retorno pode ser armazenado na pilha, geralmente antes
de chamar o procedimento. O procedimento, ao finalizar sua execução, pode
recuperar o endereço de retorno da pilha.
 Registrador dedicado: Alguns processadores têm registradores dedicados para
armazenar o endereço de retorno. Esses registradores são usados exclusivamente para
esse propósito e são geralmente de uso especial.
 Memória: Em alguns casos, especialmente em procedimentos muito grandes ou em
sistemas com requisitos específicos de gerenciamento de memória, o endereço de
retorno pode ser armazenado em uma localização de memória específica, e não na
pilha. O procedimento, ao retornar, busca esse endereço na memória.

11. As instruções de transferência de controlo são necessárias para permitir que um


programa altere a sequência de execução das instruções. Elas são essenciais para implementar
estruturas de controle de fluxo, como desvios condicionais, loops e chamadas de
procedimento. Sem instruções de transferência de controle, um programa seria estritamente
linear, executando cada instrução em sequência sem a capacidade de ramificação ou
repetição.

12. Ao determinar o uso de bits de endereçamento de uma instrução, vários factores


devem ser considerados:

 Tamanho do espaço de endereçamento: O número de bits de endereçamento


disponíveis deve ser suficiente para acessar todo o espaço de memória necessário para
o programa.
 Granularidade de endereçamento: É importante considerar se os bits de
endereçamento permitem acessar dados na granularidade desejada, como bytes,
palavras ou instruções.
 Organização da memória: A forma como a memória está organizada, como
segmentada, paginada ou linear, pode influenciar a alocação de bits de
endereçamento.
 Complexidade do processador: A quantidade de bits de endereçamento pode ser
influenciada pela arquitectura do processador e pela complexidade das instruções de
endereçamento.

13. Os elementos típicos de uma instrução de máquina incluem:

 Código de operação (opcode): Identifica a operação a ser realizada pela instrução.


 Operandos: Representam os dados sobre os quais a operação será realizada. Podem
ser registradores, endereços de memória ou valores imediatos.
 Modo de endereçamento: Especifica como os operandos serão localizados. Pode
incluir endereçamento directo, indirecto, por registro, entre outros.
 Dados adicionais: Além dos operandos, uma instrução pode conter dados adicionais,
como deslocamentos ou valores imediatos.

14. A diferença entre big-endian e little-endian diz respeito à ordem em que os bytes de
dados são armazenados na memória:

Big-endian: Neste formato, o byte mais significativo (o "big-end") de um valor é


armazenado no endereço de memória mais baixo. Isso significa que o endereço mais baixo
contém a parte mais significativa do valor.

Little-endian: Ao contrário do big-endian, no formato little-endian, o byte menos


significativo (o "little-end") de um valor é armazenado no endereço de memória mais baixo.
Isso significa que o endereço mais baixo contém a parte menos significativa do valor.

15. Diferença entre deslocamento aritmético e deslocamento lógico

Deslocamento aritmético: Um deslocamento aritmético move os bits de um valor para a


esquerda ou para a direita, deslocando-os em uma determinada quantidade de posições.
Quando ocorre um deslocamento aritmético para a direita, o bit mais significativo (MSB) é
replicado para preservar o sinal do número. Em outras palavras, o valor do sinal é mantido. Já
em um deslocamento aritmético para a esquerda, o bit mais significativo é descartado, e o bit
menos significativo é preenchido com zeros.

Deslocamento lógico: Um deslocamento lógico move os bits de um valor para a esquerda ou


para a direita, deslocando-os em uma determinada quantidade de posições. Quando ocorre um
deslocamento lógico para a direita, o bit mais significativo é preenchido com zero,
independentemente do valor original. Em um deslocamento lógico para a esquerda, o bit
menos significativo é descartado, e o bit mais significativo é preenchido com zero.

16. Tipos de locais que podem manter operandos de origem e destino:

 Registradores: Local de armazenamento de dados dentro do processador, utilizados


para operações aritméticas, lógicas e de transferência de dados.
 Memória: Local onde os dados são armazenados para acesso futuro. Operandos
podem ser lidos de ou escritos na memória durante a execução de uma instrução.
 Pilha (stack): Uma área de memória especializada utilizada para armazenar dados
temporários, como os operandos durante a execução de sub-rotinas ou procedimentos.

17. Tipos de operandos típicos nos conjuntos de instruções de máquina:

 Registradores: Operandos que são armazenados nos registradores da CPU.


 Endereços de memória: Operandos que representam locais específicos na memória
principal.
 Valores imediatos: Operandos que são valores constantes especificados diretamente
na instrução.
 Deslocamentos: Operandos que indicam um deslocamento a ser aplicado a um
endereço de memória base.

18. Finalidade de cada endereço em uma instrução com quatro endereços:

 Endereço 1: Pode representar o operando fonte 1.


 Endereço 2: Pode representar o operando fonte 2.
 Endereço 3: Pode representar o destino da operação.
 Endereço 4: Pode ser usado para diversos fins, como especificar um endereço de
destino alternativo, um deslocamento adicional, ou até mesmo um valor imediato para
operações específicas.

Você também pode gostar