Geral
Sistemas Computacionais
Semana 7
0

Questão

A integração de Assembly em programas C é uma técnica avançada utilizada para otimizar o desempenho, especialmente em partes críticas do código. Para utilizar essa técnica eficazmente, é necessário compreender como combinar as instruções Assembly com a lógica de alto nível do C.

Dado o seguinte código C com inline Assembly:


#include <stdio.h>

int main() {

    int a = 8, b = 4, result = 0;

    asm("movl %1, %%eax; 

         shll $2, %%eax; 

         subl %2, %%eax; 

         movl %%eax, %0;" 

         : "=r" (result) 

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

         : "%eax");

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

    return 0;

}

Avalie as afirmativas abaixo sobre a estratégia para otimizar o desempenho do programa utilizando Assembly inline dentro de um código C:

I. Reescrever todo o programa em Assembly para garantir máximo desempenho e eficiência.
II. Usar Assembly inline para operações críticas de desempenho e manter a lógica geral em C.
III. Eliminar todas as instruções Assembly e confiar apenas em otimizações automáticas do compilador C.
IV. Utilizar Assembly inline para otimizar operações matemáticas intensivas e deixar a lógica geral em C.
V. Converter as instruções Assembly em macros para facilitar a manutenção e reutilização do código.

Está correto o que se afirma em:
A) I, IV e V apenas.
B) II, III e V apenas.
C) II e IV apenas.
D) I, II, III, IV e V.
E) I e II apenas.
function vote(questaoId, value) { window.location.href = "/accounts/login/?next=/questao/2223/"; return; fetch(`/vote/questao/${questaoId}/`, { method: 'POST', headers: { 'Content-Type': 'application/json', 'X-CSRFToken': 'o5kwvxLV6K5j3cPVU7QaAB9BtlB8L6Z1Fo6AoNCKSttnKl2I1qklGsRq6X51Tf8m' }, 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'); } }); }