1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Qual a melhor opção?

Discussão em 'Programação' iniciada por acfryx, 12 de Janeiro de 2008. (Respostas: 1; Visualizações: 586)

  1. acfryx

    acfryx Power Member

    Qual será a melhor opção, em termos de linguagem assembly (no geral).
    Será mais eficiente fazer: (i + 1)*x ou i*x + x? :-D

    EDIT: Será mais eficiente fazer: i * 2 ou i << 1?
    EDIT: Será mais eficiente fazer: (i/2) + 1 ou (i >> 1) ^ 0x01b? (No 1º edit estava errado pois é i >> 1 e não i >> 2)

    Thx... for all...
     
    Última edição: 13 de Janeiro de 2008
  2. rj.rodrigues

    rj.rodrigues Power Member

    (i + 1)*x ou i*x + x
    É igual, pk fazer uma soma entre registos ou uma soma entre registo e um imediato é igual, pelo menos nas arquitecturas que estudei (Mips e 8086)

    i * 2 ou i << 1
    Aqui tenho duvidas, mas talvez i << 1 seja mais rapido, pk se n estou em erro (já n me lembro bem) na multiplicação o processador tem k fazer a mult (shift <<) e ir buscar o resultado ao HI (ou LO, já n sei) para colocar no registo enquanto k no shift 1 o resultado é imediatamente colocado no registo (mas sem qq pingo de certeza, isto é mais especulação k no futebol)

    (i/2) + 1 ou (i >> 2) ^ 0x01b
    Aqui não faço a minima ideia :p

    ;)
     

Partilhar esta Página