Meu professor de Arquitetura de computadores falou em uma aula que o processador movimenta sempre a quantidade de total de bits. Sitou até uma operação de MOV onde todos os 32 bits de um processador de 32 bits são sempre movidos.
Maaaaas, os processadores (ao menos o padrão Intel) possuem tb registradores de 16 e 8 bits, que são 1/2 e 1/4 de um mesmo reg. de 32 bits.
Pergunto:
-
- Então como se dá uma movimentação entre registradores de 8 bits, já que serão sempre 32 bits movidos? Indo mais além, uma movimentação entre bits no mesmo registrador, como: MOV AL, AH ? Como os bits mais significativos não são zerados? Uma possível solução q eu vejo, seria usar ANDs, uma máscara, um registrador extra e/ou a pilha:
-
- Com certeza o processador terá trabalho extra com dados menores, OK? Isso justifica algumas dicas de otimização que dizem para usar variáveis de tamanho maior para cálculos que precisam ser muito rápidos, como: int ao invés de short e double ao invés de float ??