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?
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
. - A instrução armazenada no endereço
tem um campo de endereço (deslocamento/ referência de operando) que vale . - O operando necessário está na palavra de memória de endereço
. - Um registrador indexador tem o valor
.
A pergunta é: qual equação relaciona
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).
- Conceito básico de PC-relativo
- Em endereçamento PC-relativo, o endereço efetivo do operando (EA, que aqui é
) é obtido somando um deslocamento (o campo de endereço da instrução, aqui ) 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
) é somado também ao cálculo do EA.
- 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
” — ou seja, o endereço armazenado no PC é e nessa posição está a instrução com campo . 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.
- Fórmula do endereço efetivo (sem index)
- Se o PC aponta para a instrução atual (convenção (a)), então o deslocamento
é relativo a , logo
- 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 é
em unidades de palavra), então o PC usado na soma normalmente já vale , logo
(Se a arquitetura tiver outro incremento por instrução, substitua o
pelo tamanho em palavras da instrução.)
- Fórmula do endereço efetivo com indexador
- Se há uso do registrador indexador e seus bits são somados ao deslocamento, basta adicionar
às fórmulas acima: - Convenção (a):
- Convenção (b):
- Observação sobre sinal do deslocamento
- Normalmente
é um deslocamento com sinal (pode ser positivo ou negativo). Isso significa que pode deslocar para frente ou para trás a partir do valor do PC. Em provas, cuidado: se der números negativos, trate normalmente.
- Exemplo numérico rápido (pra fixar)
- Suponha PC
, deslocamento , index . - Com convenção (a):
- Com convenção (b):
- Com convenção (a):
Passo 3
Resumo e escolha prática (o que usar na prova): como o enunciado diz que a instrução está em
, 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, é
e, se o indexador não for usado, basta tirar
:
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
(ou o tamanho da instrução em palavras) antes do deslocamento:
se houver indexador).