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

Dev-C++ Discussion :

[DevC++]Assembleur inline


Sujet :

Dev-C++

  1. #1
    Membre Expert
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 704
    D�tails du profil
    Informations personnelles :
    �ge : 45
    Localisation : France, Haute Savoie (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : Analyste-programmeur
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 704
    Par d�faut [DevC++]Assembleur inline
    J'ai un coll�gue qui a un petit probl�me :

    Citation Envoy� par Le coll�gue
    Dites, je cherche � g�rer les entr�es/sorties, sous windows (98 et XP), le probl�me est que les fonctions inp, outp, inport(b), outport(b) ne sont pas support�es par DevC++...

    J'ai un port de 8 broches (8 bits, donc), � l'adresse 0x278 sur une carte m�re faite pour �a...

    Il faut que je fasse un out sur ce port d'un mot qui peut �voluer en fonction des sorties dont j'ai besoin...

    Existe-t-il un fonction ou une manip avec les API Windows pour g�rer les E/S (autres que Com et LPT), sinon, comment syntaxer l'assembleur inline avec DevC++ ??

    Merci de vos r�ponses avis�es.
    L'urgent est fait, l'impossible est en cours, pour les miracles pr�voir un d�lai. :bug: ___ "http://club.developpez.com/regles/#LIII-A"�crivez dans un fran�ais correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.3 Entreprise - Visual studio 2022
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.7)

  2. #2
    Membre extr�mement actif

    Homme Profil pro
    Ing�nieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 44
    Localisation : France, Essonne (�le de France)

    Informations professionnelles :
    Activit� : Ing�nieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Par d�faut
    Avec les api tu peux

    Tu utilises CreateFile en donnant le nom du port genre com1 et tu donne en parametre a cet api le param OPEN_EXISTING car createFile seert aussi a creer mais avec OPEN_EXISTING il ouvre si �a existe

    Donc a partir de la tu recuperes un handle sur ton port

    Tu n'a plus qu'a faire une WriteFile pour ecrire et un ReadFIle en passant le handle sur le port pour ecrire ou lire

    J'espere que c t la reponse que tu attendais

  3. #3
    Expert confirm�

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 43
    Localisation : France, H�rault (Languedoc Roussillon)

    Informations professionnelles :
    Activit� : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par d�faut
    L'assembleur inline avec devcpp est celui de gcc (syntaxe AT&T).
    http://www.delorie.com/djgpp/doc/brennan/brennan_att_inline_djgpp.html
    Mais je te d�conseille son utilisation, car c'est pas portable (marche pas sous NT).

  4. #4
    Expert confirm�
    Avatar de Micha�l
    Profil pro
    Ing�nieur syst�mes et r�seaux
    Inscrit en
    Juillet 2003
    Messages
    3 497
    D�tails du profil
    Informations personnelles :
    �ge : 38
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : Ing�nieur syst�mes et r�seaux

    Informations forums :
    Inscription : Juillet 2003
    Messages : 3 497
    Par d�faut
    les fonctions sous dev-cpp doivent �tre avec un "_" devant :
    par exemple...
    ces fonctions sont dans dos.h

    donc ton source devrait avoir une t�te comme �a :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    #include <dos.h>
     
    main()
    {
    ...		//autre code
    _outp(0x278, 0x01);
    ...		//autre code
    }

  5. #5
    Membre Expert
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 704
    D�tails du profil
    Informations personnelles :
    �ge : 45
    Localisation : France, Haute Savoie (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : Analyste-programmeur
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 704
    Par d�faut
    R�ponse du coll�gue (je sers d'interm�diaire):
    Merci pour vos r�ponses !

    Le_coyote >> Ca donne ca :
    implicit declaration of function `int _outp(...)'
    hegros >> Comprend pas l'utilisation du CreateFile ... !
    Tu peux donner plus de d�tails ...

    L'urgent est fait, l'impossible est en cours, pour les miracles pr�voir un d�lai. :bug: ___ "http://club.developpez.com/regles/#LIII-A"�crivez dans un fran�ais correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.3 Entreprise - Visual studio 2022
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.7)

  6. #6
    Membre Expert

    Homme Profil pro
    Urbaniste
    Inscrit en
    Mars 2002
    Messages
    255
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 55
    Localisation : France, Aveyron (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : Urbaniste

    Informations forums :
    Inscription : Mars 2002
    Messages : 255
    Par d�faut
    Si tu cherches � communiquer sur port COM, j'ai �crit une super classe C++ (d�riv�e de CWinThread : classe MFC) pour g�rer la communication sur port COM. Ca g�re le changement de port COM "� chaud", �a permet d'envoyer et de recevoir des commandes, et le thread fonctionne assez proprement (utilisation d'�v�nement ainsi que de zones critiques).

    Sous Windows, pour acc�der au port COM, tu ouvres simplement le fichier nomm� "COM1" :-) Apr�s y'a plein de fonctions pour configurer :
    - SetCommState
    - SetCommTimeouts
    - SetupComm
    - PurgeComm
    - FlushFileBuffers
    - SetCommMask + WaitCommEvent
    - ...

    @+ Haypo

  7. #7
    Nouveau candidat au Club
    Inscrit en
    Ao�t 2003
    Messages
    2
    D�tails du profil
    Informations forums :
    Inscription : Ao�t 2003
    Messages : 2
    Par d�faut
    je te conseille d'int�grer la chose sous forme de macro plutot que de fonction : la t�te de ton fichier include devrait ressembler � �a :

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    #define outb(value,port) \
    __asm__ ("outb %%al,%%dx"::"a" (value),"d" (port))
     
     
    #define inb(port) ({ \
    unsigned char _v; \
    __asm__ volatile ("inb %%dx,%%al":"=a" (_v):"d" (port)); \
    _v; \
    })
     
    #define outb_p(value,port) \
    __asm__ ("outb %%al,%%dx\n" \
    		"\tjmp 1f\n" \
    		"1:\tjmp 1f\n" \
    		"1:"::"a" (value),"d" (port))
     
    #define inb_p(port) ({ \
    unsigned char _v; \
    __asm__ volatile ("inb %%dx,%%al\n" \
    	"\tjmp 1f\n" \
    	"1:\tjmp 1f\n" \
    	"1:":"=a" (_v):"d" (port)); \
    _v; \
    })
    (je sais pas exactement ce que tu veux faire, mais ce code l� marche..)

Discussions similaires

  1. Question sur l'assembleur inline
    Par sorry60 dans le forum C
    R�ponses: 5
    Dernier message: 15/06/2009, 13h10
  2. Int�grer de l'assembleur inline
    Par jackoboss dans le forum Dev-C++
    R�ponses: 2
    Dernier message: 08/12/2007, 13h19
  3. [GCC] Assembleur inline et instructions SSE2
    Par progfou dans le forum Linux
    R�ponses: 3
    Dernier message: 27/06/2007, 20h44
  4. [boso kernel] Assembleur inline GCC - Undefined Reference
    Par Edouard Kaiser dans le forum Programmation d'OS
    R�ponses: 13
    Dernier message: 29/07/2005, 09h24
  5. Assembleur inline & FPO - VC++ 6.0
    Par rigobert dans le forum x86 32-bits / 64-bits
    R�ponses: 4
    Dernier message: 19/06/2005, 00h23

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