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 :

Aide pour portage programme de C++ vers Assembleur


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de Forthman
    Homme Profil pro
    conception mécanique
    Inscrit en
    Janvier 2005
    Messages
    702
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : conception mécanique
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 702
    Par défaut Aide pour portage programme de C++ vers Assembleur
    Bonjour,

    J'ai acheté un module ROBOARD qui est en fait un mini PC
    a base de 486 avec toutes les interfaces pour piloter des servomoteurs
    et gérer toutes sortes de capteurs.

    Le truc boote sur une cle USB sans problème, je me suis installé un petit
    DOS, et tout est opérationnel

    pour utiliser les sorties de cette carte, j'ai téléchargé les librairies sur le site
    du fabricant (http://www.roboard.com/download_ml.htm)
    Mais voila, tout est écrit en C++ (j'imagine car les fichiers sont des *.cpp)

    Et je ne comprends pas un traitre mot de ce langage !

    Ca fait une semaine que je cherche, et je n'ai toujours pas compris comment
    accéder à ses ports PWM ou entrées analogiques

    Du coup je cherche une âme charitable qui voudrait bien analyser pour moi
    les fichiers sources (185Ko en tout)

    histoire que je puisse transposer tout ça en assembleur (et en Forth bien sur )

    Un petit MP pour se mettre d'accord sur le prix ?

    merci d'avance

    a+ François

  2. #2
    Membre éclairé
    Inscrit en
    Avril 2005
    Messages
    1 110
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 1 110
    Par défaut
    Je vois qu'ils fournissent tout le tsointsoin pour diverses platformes, dont visual studio. Je me demande s'il n'est pas possible de demander à visual studio de générer de l'assembleur. Sinon, tu peux toujours le récupérer en débuggant. Mais ça risque d'être long et fastidieux...

  3. #3
    Membre chevronné Avatar de themadmax
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    446
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 446
    Par défaut
    Bien sur le cul pour une fois que c'est pas l'inverse !
    Comment peut-on maitrisé l'ASM et pas comprendre le C ou le C++...
    Mais pourquoi ne compile tu pas tes classes puis les "décopiler" en ASM ?
    Les appels vers ta lib ne sont il pas possible en ASM ?

  4. #4
    Membre Expert
    Avatar de Forthman
    Homme Profil pro
    conception mécanique
    Inscrit en
    Janvier 2005
    Messages
    702
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : conception mécanique
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 702
    Par défaut
    Merci à vous deux,

    Bien oui, le C++ (ou même le C) pour moi c'est du Chinois

    Pourtant j'ai passé du temps à essayer de comprendre ces programmes,
    (il me semble que le % veut dire modulo) tous ces signes, ses parenthèses,
    accolades...etc... c'est peut-être plus rapide à taper mais moi ça m'aide pas
    des masses

    J'ai aussi un problème de taille : le programme d'exemple est donné pour une
    application bien précise qui ne me convient pas, et qui en plus fait planter la machine.

    Au hasard, voici un petit bout de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    RBAPI(void) pwm_SetBaseAddress(unsigned baseaddr) {
        write_sb_reg(SB_PWMSETTING_REG,  //set base address with enabling I/O address decoding
                     ((read_sb_reg(SB_PWMSETTING_REG) & 0xffff0000L) | 0x00800000L) + (unsigned long)(baseaddr & 0xfe00) );
        BaseAddress = baseaddr;
    }
    a+ François

  5. #5
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 487
    Par défaut
    Ok, à ta décharge, ce n'est pas le morceau de C le plus clair du monde informatique ! :-) Mais ce n'est pas non plus le plus difficile.

    Sache qu'en général, les symboles écrits en majuscules correspondent à des macros définies avec #define, macros qui la plupart du temps servent simplement d'aliases, et qui jouent le rôle d'equates dans ton cas. Je dis « en général » parce que c'est une convention, mais que le compilateur ne l'impose pas.

    Donc, en l'occurrence, « SB_PWMSETTING_REG » doit correspondre à un nombre entier correspondant au numéro du registre concerné, et cette définition doit se trouver soit en tête de programme, soit dans un des fichiers « *.h » inclus également en tête de code.

  6. #6
    Membre Expert
    Avatar de Forthman
    Homme Profil pro
    conception mécanique
    Inscrit en
    Janvier 2005
    Messages
    702
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : conception mécanique
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 702
    Par défaut
    Ok, merci Obsidian

    Pour la suite du bout de code, j'ai imaginé que :
    & 0xffff0000L serait un masque AND avec la valeur 32bits FFFF0000h ?
    | 0x00800000L serait un masque OR avec la valeur 32bits 00800000h ?

    Si quelqu'un pouvait me décortiquer tout ça je lui en serais éternellement reconnaissant !
    (enfin, une éternité pas trop longue quand-même ! )

    a+ François

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

Discussions similaires

  1. Besoin d'aide pour portage d'un driver windows vers QNX
    Par stef88 dans le forum Applications et environnements graphiques
    Réponses: 0
    Dernier message: 22/08/2007, 10h21
  2. [débutant] besoin d'aide pour un programme
    Par acdchornet dans le forum C++
    Réponses: 12
    Dernier message: 26/10/2006, 22h32
  3. Réponses: 13
    Dernier message: 26/10/2006, 21h02
  4. [Free Pascal] Besoin d'aide pour un programme
    Par ricomix dans le forum Free Pascal
    Réponses: 3
    Dernier message: 04/06/2006, 17h01
  5. aide pour un programme a compiler
    Par letombeur dans le forum C++
    Réponses: 8
    Dernier message: 11/01/2006, 21h53

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