17

Programme pour compter les cycles du cortex A8: v0.8

juin
9 Comments » |  Posted by Etienne SOBOLE |  Category:Ccc, Projets

C’est parti pour la version 0.8 du compteur de cycles.

Les modifications et évolutions de cette nouvelles version sont assez nombreuses.

  • La gestion des interactions entre NEON et VPf
  • Le compteur de cycle contrôle a présent la validité des donnée immédiate fournies
  • Il est possible à présent de mapper une variable “inline” sur un registre afin de rendre possible l’analyse de code inline C
  • Chaque code proposé retourne à présent un lien permanent que vous pouvez utiliser (dans un forum par exemple)
  • La correction (ou l’ajout) de plusieurs centaines de règles.


Concernant ce dernier point… J’avais ajouté dans la version 0.7 un log sur les instructions non reconnues par le compteur de cycles. J’aurai du faire ça bien plus tôt j’aurai gagné pas mal de temps.
Du coup je me suis aperçu qu’il manquait encore un paquet d’instruction et un ensemble assez important de variante d’instruction (principalement dans les VMOV, VCVT, et accès mémoire).

Sinon le compteur de cycle est utilisé en moyenne 45 fois par jour. C’est pas mal !
Bon. cela se passe toujours au même endroit.

Version 0.81

19 Juin 2011.

  • Correction des instructions VLDR et VSTR
  • Mise à jour table de cycles pour les instruction STR
  • Amélioration du parsing des valeurs immédiates
  • Ajout des instructions SETEND, ISB, CLREX, SMI et SMC

Version 0.82

21 Juin 2011.

  • Ajout des instructions SVC, SWI, BKPT, CDP, CDP2, MCR, MCR2, MRC, MRC2, RFE, RFEDA, RFEDB, RFEIA et RFEIB. Ces instructions sont simplement reconnues. Leur temps d’exécution a été fixé à 1 cycle.

Version 0.83

28 Juin 2011.

  • Ajout des instructions RRX, SEL, MLS, SMMUL, SMMLA, SMMLS.
  • Ajout des instructions QADDSUBX, QSUBADDX, UQADDSUBX, UQSUBADDX, UADDSUBX, USUBADDX, SADDSUBX, SSUBADDX, UHADDSUBX, UHSUBADDX, SHADDSUBX, SHSUBADDX.
  • Ajout des instructions STREXB, STREXH, STREX, STREXD, LDREXB, LDREXH, LDREX, LDREXD.
  • Correction des instructions RSC, MCR.
  • Correction des instructions PUSH, POP (1 registre).
  • Correction des instructions VLDM, VSTM.
  • Correction table cycle pour les instructions STM et LDM.
 | Tags:

9 Responses to “Programme pour compter les cycles du cortex A8: v0.8”

  1. [...] This post is a translation of « Programme pour compter les cycles du cortex A8: v08. » [...]

  2. pierre dit :

    Super outil.

    Est ce qu’une version 0.84 est prévue intégrant les instructions manquantes :p ?

    Encore bravo

  3. Etienne SOBOLE dit :

    Heu… quelles sont les instructions qui manquent???

    Il y a surtout quelques bugs à corriger.
    Pour le moment je suis un peu charrette niveau temps disponible, mais oui, il faudra de toute façon que je debug les petits problèmes vu que je me sert aussi de l’outil en ligne régulièrement.

  4. pierre dit :

    Salut,

    Les vmov.i8 ne sont pas reconnus par exemple.

    Je crois que les branchements ne fonctionnent pas également (exemple: http://pulsar.webshaker.net/ccc/sample-5de3c11a). J’imagine que c’est un peu délicat à gérer.

    En triturant le code avec des instructions équivalentes on s’en sort quand même.

  5. Shantanu dit :

    It does not work on str[cond]b which is conditional write of a byte, did not check half word yet.

  6. Etienne SOBOLE dit :

    that’s right.

    but you can use STRBEQ instead !
    I’m not really sure but I think STREQB is the old notation !

  7. Like ‘Stone’ says, vmov and vdup don’t work, if you use immediates. Could you fix it?

    VMOV.I8 d1,#0xff

    http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0204h/CIHGGEEB.html

    Also would be great if A15 performance were considered.

  8. Alexander Shpilkin dit :

    Apparently it doesn’t know about doubleword loads and stores (LDRD, STRD).

  9. Serge Plagnol dit :

    Bonjour,

    j’ai pas mal d’instructions non-décodée (cf. http://pulsar.webshaker.net/ccc/sample-5aa63a1f). Auriez-vous le temps de jeter un oeil?

    Merci d’avance

Répondre

Human control : 7 + 5 =