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

 C Discussion :

Recherche recursive / ASCET folder


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Août 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2013
    Messages : 2
    Par défaut Recherche recursive / ASCET folder
    Bonjour à tous,

    J'ai commencé à travailler dans une société qui developpé du logiciel embarqué (embedded software). On m'a demandé de faire un outil capable de retrouver des bouts de code et de le formaliser dans un seul fichier header (.h). Je fait appelle à vous pour savoir si un outil est capable de faire cela.

    L'application de base s'appelle ASCET. Cela sert à faire des modèles (tels que Matlab/Simulink) pour simuler le comportement des composant de voiture. Or nous travaillons exclusivement avec Matlab donc il est obligatoire d'y faire rentrer ASCET. L'idée est de générer le code C du modèle ASCET (avec un code-generator) et de l’introduire en Simulink (en mode s-function).

    Le problème : Le code C généré contient des fonctions propres à ASCET (code optimisé). Le code C ne présente pas des #include de library ou header. Résultat le code ne marche pas sur Simulink.

    Un exemple: une multiplication (petite bloque qui multiplie une var. a et une var. b) dans le modèle va générer un code-c avec un appel sur une fonction propre à ASCET pour la multiplication:

    Je répète : Pas de #include dans le fichier de sortie. Donc pas de header ou library associée.

    Je cherche (avec Notepad ++) et je trouve le mot de la fonction dans le dossier d’installation d’ASCET dans un header (system.h). Donc on trouve la fonction dans une macro (#define):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     #define (sint16)Mul_LimitSint16Sint16(uint16,uint16) Mul_s16s16(uint16, uint16)
    On a maintenant une nouvelle fonction, Mul_LimitSint16Sint16(uint16,uint16), qui va reparaître dans une autre macro (#define) d’un autre header. Cela continue plusieurs fois jusqu'à tomber sur la vraie opération arithmétique:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    sint16 Mul_limit(uint16 oper1, uint16 oper2)
    {
      return oper1*oper2;
    }
    Si j'arrive à faire sortir tous ces appels dans une seul fichier header (.h) j'aurais fini ma tache. Connaissez vous un outil capable de faire cela?

  2. #2
    Membre chevronné
    Profil pro
    Ingénieur sécurité
    Inscrit en
    Février 2007
    Messages
    574
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur sécurité
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2007
    Messages : 574
    Par défaut
    Question bete, tu peux pas juste rajouter les headers trouve dans l'install dans ton code genere? Si y'a pas de conflit de def ca devrait marcher.

    Citation Envoyé par parispecial Voir le message
    Connaissez vous un outil capable de faire cela?
    Non pas vraiment. Ca doit etre assez complique a scripter en plus (peut eter a coup de sed/grep).

    Une solution qui me semble plus jouable serait de faire le travail en sens inverse. Recuperer la sortie intermediaire de ton compilo, une fois toutes les directives pre-processeur resolues (gcc -E). Avec ca tu as le nom des fonctions finales.
    Ensuite tu remontes depuis le nom de la vrai fonction vers les definitions pre-processeur dans le source (a coup de grep).

    Bon courage

  3. #3
    Candidat au Club
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Août 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2013
    Messages : 2
    Par défaut
    Merci pour le post dahtah.

    J'ai du faire a la main la recherche de fonctions. Ça me prend beaucoup de temps mais je n'ai pas d'autre idée car pour ton propos, le code ne peut pas être compile suite a manque de modules.

    Nous faisons nos modules (sans tester) et les filons a l'intégration (encore une autre société). Pas de compile a vraie dire pour faire comme tu le propose.

    Sujet clos.

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

Discussions similaires

  1. Recherche recursive sur tous les disques
    Par cellendhyll dans le forum Général Python
    Réponses: 13
    Dernier message: 15/12/2009, 14h19
  2. recherche recursive de fichier par extension-date-heure
    Par grundraisin dans le forum VBScript
    Réponses: 10
    Dernier message: 16/09/2009, 12h48
  3. Recherche Recursive Depuis chaines de caractères
    Par quentingsc dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 07/12/2006, 18h56
  4. Ksh, recherche récursive
    Par Soria17 dans le forum Linux
    Réponses: 9
    Dernier message: 15/11/2006, 18h45
  5. Recherche recursive à l'aide des expressions reguliére
    Par titoff dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 20/12/2005, 16h42

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