Modelo de custo x86 moderno

Estou escrevendo um compilador JIT com um back-end x86 e aprendendo o montador x86 e o código da máquina enquanto vou. Eu usei o ARM assembler há cerca de 20 anos e estou surpreso com a diferença nos modelos de custo entre essas arquitetura

Especificamente, acessos e ramificações de memória são caros no ARM, mas as operações e saltos de pilha equivalentes são baratos no x86. Acredito que as CPUs x86 modernas fazem otimizações muito mais dinâmicas do que os núcleos ARM e acho difícil antecipar seus efeito

O que é um bom modelo de custo a ter em mente ao escrever o montador x86? Quais combinações de instruções são baratas e quais são caras?

or exemplo, meu compilador seria mais simples se ele sempre gerasse o formulário longo para carregar números inteiros ou saltar para compensações, mesmo que os números inteiros fossem pequenos ou se compensassem, mas isso afetaria o desempenh

Ainda não fiz nenhum ponto flutuante, mas gostaria de entrar em breve. Existe algo não óbvio na interação entre código normal e código flutuante?

Eu sei que existem muitas referências (por exemplo, Michael Abrash) sobre a otimização x86, mas tenho um palpite de que algo com mais de alguns anos não se aplicará às CPUs x86 modernas, porque elas mudaram muito ultimamente. Estou correcto

questionAnswers(12)

yourAnswerToTheQuestion