Questão nº 32
Questão de Tecnologia da Informação · FCC DPE-RS 2017 (nº 32)
Considere um processador em cujo conjunto de instruções há instruções de três operandos. A instrução mult multiplica os dois primeiros operandos e armazena o resultado no terceiro operando e add soma os dois primeiros operandos e armazena o resultado no terceiro. Neste processador, o código que corresponde à operação X = (B * C) + D é:
- Amult B, C, X
add D, X, X (alternativa correta) - Bmult B, C, B
mult B, C, C
add X, B, C - Cmult B, C, C
add D, B, X - Dmult B, X, X
add D, C, X - Emult B, C, C
add D, X, B
add B, C, X
Resposta comentada
Gabarito Alternativa A
Em um processador com instruções de três operandos, cada instrução como `mult` (multiplicar) ou `add` (somar) recebe dois valores de entrada (operandos fonte) e armazena o resultado em um terceiro local (operando destino). O desafio é sequenciar as instruções e gerenciar onde os resultados intermediários são guardados para construir a expressão final.
(A) Correta: A primeira instrução `mult B, C, X` calcula `B C` e armazena o resultado diretamente em `X`. A segunda instrução `add D, X, X` soma `D` ao valor atual de `X` (que é `B C`) e armazena o resultado final em `X`, completando a operação `X = (B C) + D`.
(B) Incorreta: A instrução `mult B, C, B` sobrescreve `B` com `BC`. A próxima `mult B, C, C` então calcula `(BC)C` e armazena em `C`, o que não é o desejado. A última instrução `add X, B, C` tem o destino errado (`C` em vez de `X`) e os valores dos operandos também estão incorretos para a soma final.
(C) Incorreta: A instrução `mult B, C, C` calcula `B C` e armazena em `C`. No entanto, a instrução seguinte `add D, B, X` soma `D` com o valor original de `B` (que não foi alterado), resultando em `X = D + B`, e não `X = (B C) + D`. Armadilha da banca: O erro está em usar o operando `B` (original) na soma, em vez do resultado `BC` que foi armazenado em `C`.
(D) Incorreta: A instrução `mult B, X, X` calcula `B X` e armazena em `X`. Como `X` não possui o valor de `C` ou `BC` inicialmente, esta operação é incorreta para o início da expressão. A instrução `add D, C, X` então calcula `D + C`, o que não corresponde à expressão desejada.
(E) Incorreta: A instrução `mult B, C, C` calcula `B C` e armazena em `C`. A instrução `add D, X, B` tenta somar `D` com `X` (cujo valor é desconhecido ou não relevante para a expressão neste ponto) e armazena em `B`, sobrescrevendo `B`. A instrução final `add B, C, X` usaria um `B` já modificado e um `C` com `B*C`, mas a sequência de operações e o uso de `X` como operando fonte sem valor definido tornam esta alternativa inválida.
Fonte: FCC DPE-RS 2017 Analista - Apoio Especializado (TI - Segurança da Informação) (Caderno Tipo 1). Reproduzida para fins de estudo.