IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Assembleur Discussion :

Principe de l'instruction LOOP


Sujet :

Assembleur

  1. #21
    Invité
    Invité(e)
    Par défaut
    La réponse est... ça dépend de la boucle mais il vaut mieux utiliser dec/jnz car:

    - compatibilité avec les autres procs

    - Intel ayant la facheuse habitude de modifier légèrement son architecture fréquemment, le problème avec dec que j'ai évoqué
    est peut-être déjà corrigé sur les P4 de deuxième génération.

    - LOOP ne travaille qu'avec ecx, je m'explique dans certaine boucle trés grande (car déroulée) j'utilise une variable comme compteur pour préserver un registre.

    - le temps du branchement est en général négligeable par rapport au corps de la boucle. Si la boucle est trés petite, alors il vaut mieux la dérouler.


    La meilleure méthode est quand même de ne pas acheter de P4 !. Le seul gain qu'il peut avoir sur un Athlon est lors de l'utilisation massive des instructions SSE/SSE2. Et encore... s'il tournait a la même fréquence, le P4 serait trés loin derrière ce qui prouve que son architecture (NetBurst) est MAUVAISE. D'ailleurs, je rappelle que les premiers P4 était plus lent que des PIII de même fréquence !

    Un cache de donnée de 8ko en L1 alors que la mémoire est le goulot d'étranglement du PC (même avec des bus à XXXMHz) est une immense connerie. De même pour le cache L1 de code: 12 k-uops (donc ne pas trop dérouler les boucles) !!! Augmenter le L2 est bien gentil mais c'est plutôt le L1 qui aurait dû augmenter. C'est la première fois qu'un processeur voit le L1 diminuer !!! AMD a bien compris l'importance du L1(64ko pour les données et idem pour le code).

    A+

  2. #22
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 96
    Points : 116
    Points
    116
    Par défaut
    A propos de ca, je pense que l'amd 64 sera _génial_ pour l'optimisation; vous imaginez : 2 fois plus de registres
    Responsable du projet SKAN (OS à but didactique)
    Contactez moi pour toutes questions ou remarques sur le projet.

  3. #23
    Membre actif
    Avatar de mathk
    Inscrit en
    Décembre 2003
    Messages
    211
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 211
    Points : 233
    Points
    233
    Par défaut
    Jèai pris ca dans un book
    Si grande est la faiblesse d'une âme, dont la raison est partie!
    Ne jamais embrouiller ni abasourdir par une foule d'images le génie intérieur qui réside au fonde de sa poitrine,...
    L'ambition est le rfuge de l'échec. "Oscar Wild"

  4. #24
    Membre habitué
    Avatar de TangiX
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 139
    Points : 168
    Points
    168
    Par défaut
    Citation Envoyé par 2PluS4
    A propos de ca, je pense que l'amd 64 sera _génial_ pour l'optimisation; vous imaginez : 2 fois plus de registres
    et meme plus !!
    plus de cache
    mais surtout enfin une gestion reelle de la DDR il etait temps!

  5. #25
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 8
    Points : 8
    Points
    8
    Par défaut
    Juste une petite précision ( chose qui arrive assez frequement est qu'on utilise le code suivant avec loop )

    @@1:
    ...
    LOOP @@1

    Si cx est à 1 c'est impec ca tournera comvenablement par contre si cx est égal à zero il bouclera 65535 fois.

    C'est surement un probleme de débutant mais c'est extremement embetant d'être confronté a un bouclage trop important quand normalement il n'est pas sencé le faire.

  6. #26
    Membre à l'essai
    Inscrit en
    Avril 2004
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 29
    Points : 12
    Points
    12
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    boucle:
    .
    .
    dec cx         
    jcxz suite
    jmp boucle
    suite:
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    boucle:
    .
    .
    jcxz suite
    dec cx
    jmp boucle
    suite:
    sont deux choses différente selon si on veut inclure 0 dans le décompte ou pas...
    pas le choix avec LOOP.
    dans le 2eme cas, si cx=0 (même au départ) on passe à la suite.

Discussions similaires

  1. Instruction Do Loop
    Par Lorenzole+bo dans le forum VBA Access
    Réponses: 6
    Dernier message: 09/09/2007, 18h25
  2. Principe de l'instruction Xor
    Par ..::snake::.. dans le forum Assembleur
    Réponses: 18
    Dernier message: 02/06/2007, 01h48
  3. Instruction pour créer un fichier text ???
    Par Soulsurfer dans le forum Langage
    Réponses: 2
    Dernier message: 06/08/2002, 11h17
  4. [Crystal Report][VB6] instruction PrintReport
    Par yyyeeeaaahhh dans le forum SDK
    Réponses: 4
    Dernier message: 29/07/2002, 14h58
  5. [TASM] Problème concernant l'instruction LGDT
    Par Ninkosen dans le forum Assembleur
    Réponses: 3
    Dernier message: 15/07/2002, 19h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo