O endereço armazenado no contador de programa é representado pelo símbolo X1. A instrução armazenada em X1 tem uma parte de endereço (referência de operando) X2. O operando necessário para executar a instrução é armazenado na palavra de memória com endereço X3. Um registrador indexador contém o valor X4. Qual é a relação entre essas diversas grandezas se o modo de endereçamento for
PC relativo?

Passo 1

O enunciado fornece as seguintes informações e pede a relação entre elas no modo PC-relativo:
  • O contador de programa (PC) contém o valor X_1.
  • A instrução armazenada no endereço X_1 tem um campo de endereço (deslocamento/ referência de operando) que vale X_2.
  • O operando necessário está na palavra de memória de endereço X_3.
  • Um registrador indexador tem o valor X_4.
A pergunta é: qual equação relaciona X_1, X_2, X_3, X_4 quando o modo de endereçamento é PC-relativo?

Passo 2

Vamos entender, passo a passo, o que significa “PC-relativo” (sem medo — eu te explico devagarinho).
  1. Conceito básico de PC-relativo
  • Em endereçamento PC-relativo, o endereço efetivo do operando (EA, que aqui é X_3) é obtido somando um deslocamento (o campo de endereço da instrução, aqui X_2) ao conteúdo do PC.
  • Em muitas máquinas há também um registrador indexador: se ele for usado, o conteúdo do index (aqui X_4) é somado também ao cálculo do EA.
  1. Observação importante sobre convenção do PC
  • Existem duas convenções usadas em arquiteturas reais:
    a) PC contém o endereço da instrução atual (isto é, PC = endereço da instrução que estamos a executar).
    b) PC contém o endereço da próxima instrução (isto é, após o fetch o PC já aponta para a próxima instrução).
  • O problema diz explicitamente que “a instrução armazenada em X_1” — ou seja, o endereço armazenado no PC é X_1 e nessa posição está a instrução com campo X_2. Por isso a leitura natural do enunciado é que o PC, no momento do cálculo do EA, vale o endereço da instrução atual (convenção (a)). Vou explicar as fórmulas em ambas as convenções para você não ficar na dúvida.
  1. Fórmula do endereço efetivo (sem index)
  • Se o PC aponta para a instrução atual (convenção (a)), então o deslocamento X_2 é relativo a X_1, logo
X_3 = X_1 + X_2.
  • Se o PC aponta para a próxima instrução (convenção (b)), e supondo que cada instrução ocupa uma palavra (ou que o passo para o próximo endereço é +1 em unidades de palavra), então o PC usado na soma normalmente já vale X_1+1, logo
X_3 = (X_1 + 1) + X_2 = X_1 + 1 + X_2.
(Se a arquitetura tiver outro incremento por instrução, substitua o 1 pelo tamanho em palavras da instrução.)
  1. Fórmula do endereço efetivo com indexador
  • Se há uso do registrador indexador e seus bits são somados ao deslocamento, basta adicionar X_4 às fórmulas acima:
    • Convenção (a):
    X_3 = X_1 + X_2 + X_4.
    • Convenção (b):
    X_3 = X_1 + 1 + X_2 + X_4.
  1. Observação sobre sinal do deslocamento
  • Normalmente X_2 é um deslocamento com sinal (pode ser positivo ou negativo). Isso significa que X_2 pode deslocar para frente ou para trás a partir do valor do PC. Em provas, cuidado: se der números negativos, trate \,+(-5)= -5 normalmente.
  1. Exemplo numérico rápido (pra fixar)
  • Suponha PC X_1=100, deslocamento X_2=-4, index X_4=2.
    • Com convenção (a): X_3 = 100 + (-4) + 2 = 98.
    • Com convenção (b): X_3 = 100 + 1 + (-4) + 2 = 99.

Passo 3

Resumo e escolha prática (o que usar na prova): como o enunciado diz que a instrução está em X_1, a interpretação mais direta é usar a convenção em que o PC vale o endereço da instrução atual. Portanto a relação final, incluindo o indexador quando usado, é
X_3 = X_1 + X_2 + X_4,
e, se o indexador não for usado, basta tirar X_4:
X_3 = X_1 + X_2.
Se, por outro lado, a arquitetura da questão usar a convenção em que o PC já aponta para a próxima instrução (situação comum em certos livros/arquiteturas), então deve somar-se +1 (ou o tamanho da instrução em palavras) antes do deslocamento: X_3 = X_1 + 1 + X_2 (+ X_4 se houver indexador).

Resposta

X_3 = X_1 + X_2 + X_4 (convenção: PC = endereço da instrução em X_1; sem indexador: X_3 = X_1 + X_2).\n
X_3 = X_1 + 1 + X_2 + X_4 (convenção alternativa: PC já aponta para a próxima instrução; sem indexador: X_3 = X_1 + 1 + X_2).

Exercícios relacionados