Geral
Sistemas Computacionais
Semana 7
0

Questão

O uso de registradores no inline Assembly é fundamental para a eficiência das operações de baixo nível. Entender como especificar e utilizar esses registradores corretamente é crucial para o desenvolvimento de programas otimizados em C com Assembly.

Dado o seguinte código C com inline Assembly, observe a função correta dos registradores utilizados:


#include <stdio.h>

int main() {

    int a = 5, b = 3, result;

    asm("movl %1, %%eax; 

         imull %2, %%eax; 

         movl %%eax, %0;" 

         : "=r" (result) 

         : "r" (a), "r" (b) 

         : "%eax");

    printf("Resultado: %d\n", result);

    return 0;

}

Com relação a função dos registradores utilizados, observe as afirmativas a seguir:

I. O registrador %%eax é usado para armazenar temporariamente o valor de result antes de movê-lo para a variável C.
II. O registrador %%eax é usado para adicionar os valores de a e b, armazenando o resultado em result.
III. O registrador %%eax é usado para dividir os valores de a e b, armazenando o resultado em result.
IV. O registrador %%eax é usado para multiplicar os valores de a e b, armazenando o resultado em result.
V. O registrador %%eax armazena temporariamente o valor de a, multiplica pelo valor de b e, em seguida, armazena o resultado em result.

Está correto o que se afirma em:
A) I, II e III apenas.
B) III e IV apenas.
C) I, II, III, IV e IV.
D) IV e V apenas.
E) I e II apenas.
function vote(questaoId, value) { window.location.href = "/accounts/login/?next=/questao/2225/"; return; fetch(`/vote/questao/${questaoId}/`, { method: 'POST', headers: { 'Content-Type': 'application/json', 'X-CSRFToken': '5fbCM8YLM413lP79QRiHuZeue4BgscAjsrx42uK5ERs9iSTEEXCFcE7XmllNmn37' }, body: JSON.stringify({ value: value }) }) .then(response => response.json()) .then(data => { if (data.success) { document.getElementById(`score-${questaoId}`).textContent = data.score; const upBtn = document.querySelector(`button[onclick="vote(${questaoId}, 1)"]`); const downBtn = document.querySelector(`button[onclick="vote(${questaoId}, -1)"]`); upBtn.classList.remove('active-up'); downBtn.classList.remove('active-down'); if (data.user_vote === 1) upBtn.classList.add('active-up'); if (data.user_vote === -1) downBtn.classList.add('active-down'); } }); }