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

Autres architectures Assembleur Discussion :

[z/Architecture] CLC (compare logical characters) et CLI (compare logical immediate)


Sujet :

Autres architectures Assembleur

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 14
    Points : 11
    Points
    11
    Par défaut [z/Architecture] CLC (compare logical characters) et CLI (compare logical immediate)
    Bonjour Tout le monde,
    je suis un débutant dans l'assembleur et j'aimerais svp une revue sur ce code
    suite à algorithme suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
              si RSR <> 49 et RSR = 4
                    si tt = 0  ou tt = 7 ou tt = 14
                      tx = 47
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    AX460010 DS    0H
                  CLC   ZCODRIS(2),=C'49'
                   BE    AX460015
                   CLI   ZCODRIS,C'4'
                   BE    AX460015
                   CLC   4(7,R7),=C'000,000'
                   BNE   AX460015
                   CLC   4(7,R7),=C'007,000'
                   BNE   AX460015
                   CLC   4(7,R7),=C'014,000'
                    BNE   AX460015
                    MVC   0(3,R7),=C'047'
                    B       AX460095
    AX460015  .......
    Cordialement

  2. #2
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 226
    Points : 10 188
    Points
    10 188
    Par défaut
    Pour ton algo le signe <> moi je sais pas ce que cela veut dire , c'est soit plus petit , soit plus grand soit égal.


    Pour ton code assembleur je le trouve illisible en l'état , c'est quel assembleur ?
    Parce que chez moi CLC c'est pour Clear Carry Flag , et CLI Clear Interrupt donc je vois pas pourquoi ils ont des "arguments".
    Je n'ai jamais vu comme syntaxe C'014' ou =C'01' , donc je sais pas ce que cela signifie (et c'est vachement exotique comme syntaxe).
    AX460015 c'est vachement lisible comme label
    Les sauts conditionnels doivent se faire après une instruction CMP , sauf si tu es sur de l'état des flags a ce moment la (mais chez moi BE regarde le Zero flag et ni CLC ni CLI le modifie donc il serve a rien ).

    Pour moi ce code n'a aucun sens , et j'en ai mangé de l'assembleur sur je ne sais combien de machine.
    (Sauf si tu dis quel assembleur c'est et quel programme assembleur j'y verrais peut être plus clair).

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 14
    Points : 11
    Points
    11
    Par défaut
    Bonjour Kanagi,

    Merci pour ta réponse , pour ce qui est du code c'est une évolution apporté a un pgm existant
    pour ce qui est de quel assembleur je vais poser la question et je reviens vers toi

    Sachant bien que je suis un bleu pour l'assembleur


    Cdlt,

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 14
    Points : 11
    Points
    11
    Par défaut
    Bonjour Knnagi,

    Pour ce qui est de l'instruction CLC (compare logical characters)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://cs.middlesex.cc.nj.us/~schatz/csc233/handouts/clc.html
    et pour le CLI (compare logical immediate)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://csc.columbusstate.edu/woolbright/CLI.HTM
    pour ce qui de mon code c'est juste qu'il fallait apportait quel instructions
    je vais le rédiger et je mets en discussion comme ça si ça peux aider

    cordialement

  5. #5
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 226
    Points : 10 188
    Points
    10 188
    Par défaut
    Cela ressemble a un assembleur non seulement exotique mais inventé de toute pièce , je ne vois pas pour quel type de processeur ça cible (parce que vu le truc je pense que coder directement en x86 , ou m68000 , arm ou MIPS ça va être plus simple rien que niveau documentation ! ).

    De toute façon ton code est illisible , je veux dire les mot clé sont arbitraire (et ressemble a des macros).
    Même le code CLC 4(7,R7),C'4' , je pense que la meilleur aide que tu peux avoir c'est la doc officiel du programme assembleur.
    (Parce que quand je vois ça je me dis autant créer son propre assembleur c'est plus rapide et ça sera plus lisible ).

  6. #6
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 951
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 951
    Points : 5 671
    Points
    5 671
    Par défaut
    Bonjour,

    On dirait du code syntaxe ATT pour un processeur Intel ?


  7. #7
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 226
    Points : 10 188
    Points
    10 188
    Par défaut
    Citation Envoyé par droggo Voir le message
    On dirait du code syntaxe ATT pour un processeur Intel ?
    Je sais que la syntaxe AT&T est réputé illisible , leur différence de syntaxe est minime exemple :

    mov eax, 0FFh Donnera en norme AT&T movl $0xFF, %eax .
    mov byte ptr [ebx], 0FFh Donnera en norme AT&T movb $0xFF, (%ebx) .
    A part le '%' AT&T , il a la même syntaxe que la plupart des autres assembleurs ( fait du M68000 ,6502 ou z80 tu aura des () pour les pointeurs et '$' pour l'hexa).

    Mais ce n'est pas du X86 (que cela soit intel ou AT&T) :

    Dans le X86 les sauts conditionnels sont du type JCC (et non BCC).
    Dans le X86 CLC et CLI ne sont pas des mnémoniques de comparaison mais bel et bien des mnémoniques initialisation des flags.
    Une écriture de valeur immédiate du genre =C'000,000' , te renverrai une erreur (que cela soit Intel ou AT&T).
    L'écriture de ZCODRIS(2) est obligatoirement une macro sur n'importe quel assembleur.
    La mnémonique MVC n'existe pas sous X86 (en tout cas rien trouvé la dessus ! ).

    NT: tu peux étendre je que j'ai dit pour tout les assembleurs (a part le BCC qui existent sur certain assembleur ).

    Pourquoi je pense que c'est un assembleur virtuel ?
    Le mot clé DC c'est pour les définitions : SIX DC C' ABCD' , ONE DC C'ABCDE'
    Du coup on peut voir un truc un peu abérant qui ne représente pas le fonctionnement d'un processeur réel genre : CLC ONE,SIX
    Je connaît aucun assembleur de tête qui peut se permettre de faire des comparaison du type valeur immédiate/immédiate (et encore moins string/string).
    ect ect bref , certes l'assembleur n'est pas normalisé , mais comme celui ci ne cible aucun processeur réel et que ces mnémoniques sont un peu en random que son programme assembleur est quasi inconnu , il est peut être préférable de coder directement en X86 ou tout autre assembleur (voir du C,C++,autre).
    Si je dis cela c'est parce que j'ai testé beaucoup d'assembleur ,et il existe de très bon programme assembleur qui facilite l'écriture du code rapide , autant celui la je le le trouve improductif en plus de ne pas représenter réellement un processeur.

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 14
    Points : 11
    Points
    11
    Par défaut
    Je tiens à vous remercier,
    Voici un peu l'explication de mon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
                        CLC   ZCODRIS(2),=C'49'           si on a  RSR = 49X, inutile de continuer, on passe au traitement suivant AX460015 
                        BE    AX460015     
                        CLI   ZCODRIS,C'4'                      si on n’a pas RSR = 4XX, idem que ci-dessus, on passe à AX460015
                       BNE  AX460015
                                                                      à partir d’ici, on a bien ‘4XX’ et pas ‘49X’ et on teste si on a 1 des 3 cas : 000,000 ou 007,000 ou 014,000 ; si oui, on va à AX4600YY :
                       CLC   4(7,R7),=C'000,000'       
                       BE    AX4600YY
                       CLC   4(7,R7),=C'007,000'             
                       BE    AX4600YY
                       CLC   4(7,R7),=C'014,000'             
                       BNE   AX460011                           ici, si on n’a pas 014,000 (et donc pas non plus 000,000 ni 007,000), on part à AX460011 pour voir si on a 009,000
    AX4600YY   MVC   0(3,R7),=C'047'                 arrivé ici, on a soit cas 000,000 soit 007,00 soit 014,000 et donc on fait le MOVE 047 ; après on passe au traitement suivant  
                       B     AX460095
    AX460015     . .........

    Cordialement;

  9. #9
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2005
    Messages
    1 473
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 473
    Points : 3 286
    Points
    3 286
    Par défaut
    Citation Envoyé par Kannagi Voir le message
    ...
    Pourquoi je pense que c'est un assembleur virtuel ?
    Le mot clé DC c'est pour les définitions : SIX DC C' ABCD' , ONE DC C'ABCDE'
    Du coup on peut voir un truc un peu abérant qui ne représente pas le fonctionnement d'un processeur réel genre : CLC ONE,SIX
    Je connaît aucun assembleur de tête qui peut se permettre de faire des comparaison du type valeur immédiate/immédiate (et encore moins string/string).
    ect ect bref , certes l'assembleur n'est pas normalisé , mais comme celui ci ne cible aucun processeur réel et que ces mnémoniques sont un peu en random que son programme assembleur est quasi inconnu , il est peut être préférable de coder directement en X86 ou tout autre assembleur (voir du C,C++,autre).
    Si je dis cela c'est parce que j'ai testé beaucoup d'assembleur ,et il existe de très bon programme assembleur qui facilite l'écriture du code rapide , autant celui la je le le trouve improductif en plus de ne pas représenter réellement un processeur.
    Eh bien, jeune Padawan tu ne connais pas tous les assembleurs de la planète informatique ...

    Nous avons affaire ici à de l'assembleur Mainframe IBM toujours vivant et ceci depuis 1964, et encore présent dans les grandes entreprises ou administrations ...

    Et voici un exemple de documentation ... attention c'est du lourd ...

    http://publibfi.boulder.ibm.com/epubs/pdf/dz9zr010.pdf

    Bon c'est vrai que notre ami aurait du préciser tout cela ... En plus je ne comprends pas très bien sa question ...

  10. #10
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 226
    Points : 10 188
    Points
    10 188
    Par défaut
    @ Luc Orient
    Effectivement je ne connais pas tout
    J'aurais bien voulu un doc plus petite pour que je connaisse son asm (pas forcément envie de lire les 1700 pages ).
    Cela n’empêche pas que cela reste un assembleur très exotique sur de nombreux point !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. étude comparative des architectures applicatives
    Par wissem.ba dans le forum Général Java
    Réponses: 4
    Dernier message: 31/01/2010, 11h57
  2. [struts] Comparer deux variables avec <logic:equal>
    Par trax020 dans le forum Struts 1
    Réponses: 4
    Dernier message: 29/05/2005, 12h08
  3. [langage] Comparer Perl avec d'autres langages comme C ?
    Par Anonymous dans le forum Langage
    Réponses: 3
    Dernier message: 11/08/2002, 00h52
  4. character set // Nls_lang
    Par fopicht dans le forum Oracle
    Réponses: 2
    Dernier message: 23/05/2002, 13h04
  5. Comparer des fichiers de données : Quel Langage ?
    Par Anonymous dans le forum Langages de programmation
    Réponses: 6
    Dernier message: 24/04/2002, 23h37

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