Pergunta

Em x86 GNU Assembler existem diferentes sufixos para operações de memória relacionada. Por exemplo:.

movb, movs, movw, movl, movq, movt(?)

Agora a minha pergunta é a seguinte:

Será que o sufixo tem qualquer efeito sobre a forma como o processador é obter os dados fora da memória principal ou será sempre uma ou mais 32-bit (x86) pedaços carregado no cache?

Quais são os efeitos ao lado do acesso à memória?

Foi útil?

Solução

Aqueles que não são "sufixos". Você está olhando para seis instruções de máquina distintas. Cada um deles se move uma quantidade diferente de dados. movb só se move um byte, por exemplo.


Ok, eu vejo agora que você estava perguntando sobre cache. Será sempre o caso que linhas de cache única completos são movidos em cache. Se o cache é de 16 bytes de largura, por exemplo, então 16 ou 32 bytes é o que será movido da memória principal (uma ou duas linhas de cache).

No entanto, o que se move de esconderijo para os registradores depende da instrução.

Outras dicas

Ele não afeta como acessos à memória são feitas; a única coisa que pode afetar que é a largura do barramento de dados da CPU. Tudo isso afeta é a granularidade das operações sobre os dados.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top