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

x86 32-bits / 64-bits Assembleur Discussion :

Gestion des évenements


Sujet :

x86 32-bits / 64-bits Assembleur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Inscrit en
    Septembre 2008
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 17
    Points : 14
    Points
    14
    Par défaut Gestion des évenements
    Bonjour, je voulais savoir s'il était possible de faire de la programmation évenementielle en assembleur.
    J'ai en effet l'occasion de programmer avec des langages plus haut niveau, mais je souhaite savoir comment la gestion des évenements fonctionne, et ainsi implémenter un programme en asm qui permettrait d'interagir avec l'utilisateur selon ce qu'il fait.

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 377
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 377
    Points : 23 663
    Points
    23 663
    Par défaut
    L'assembleur est le langage de ton micro-processeur. Son jeu d'instruction lui est donc propre, même si le principe est à peu près le même sur toutes les machines. Tu ne trouveras donc que des instructions servant à manipuler des données. Formellement : les lire, effectuer des opérations logiques ou arithmétiques élémentaires dessus et les réécrire autre part, plus une poignée d'instructions de contrôle des différents bus et des interruptions.

    Il est cependant tout-à-fait possible d'implémenter ce qui ce fait à plus haut niveau. La programmation événementielle, en elle-même, est relativement simple : la clé réside dans la boucle principale. En gros, tu attends un «événement » qui te parvient sous la forme d'un message (qui lui même est en général soit un entier contenant le numéro de l'événement, soit une structure de données), en fonction de ce que tu lis, tu appelles le sous-programme correspondant, et quand celui a terminé, tu « boucles » la boucle et tu te met à l'écoute de l'événement suivant.

  3. #3
    Membre à l'essai
    Inscrit en
    Septembre 2008
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 17
    Points : 14
    Points
    14
    Par défaut
    Oui donc c'est bien ce qu'il me semblait, une routine analyse en continu une certaine table d'évènements et dès qu'un nouveau champ apparait, on traite la procédure correspondante.
    Maintenant, ce que j'ignore totalement, c'est la nature de cette structure:
    Est-ce une structure définie et "remplie" par Windows?
    Comment la réupérer et l'exploiter?

  4. #4
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 361
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 361
    Points : 20 386
    Points
    20 386
    Par défaut
    Citation Envoyé par sepnar Voir le message
    Oui donc c'est bien ce qu'il me semblait, une routine analyse en continu une certaine table d'évènements et dès qu'un nouveau champ apparait, on traite la procédure correspondante.
    Maintenant, ce que j'ignore totalement, c'est la nature de cette structure:
    Est-ce une structure définie et "remplie" par Windows?
    Comment la réupérer et l'exploiter?
    Salut tout dépend sous quel os tu veux faire un programme en assembleur...
    si c'est sous Windows mais exe-cible ms-dos alors oui il faut faire une boucle de message comme le dit Obsidian.
    C'est à toi de tout gérer de A à Z
    Maintenant il est possible d'utiliser un assembleur comme MASM et de créer un programme exe-cible Windows /win 32 ( ou bien 64 )..
    Mais faire un programme Windows en assembleur n'a aucun intérêt autant prendre un compilateur C/C++..

    par contre ce qui est possible à faire c'est d'exploiter les fonctionnalités du multitache , du mode protégé pour les intel x86 mais c'est carrément plus
    complexe.

    Mais tu ne touches à cela que si tu souhaites faire ton propre OS

  5. #5
    Membre à l'essai
    Inscrit en
    Septembre 2008
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 17
    Points : 14
    Points
    14
    Par défaut
    Citation Envoyé par Mat.M Voir le message
    Salut tout dépend sous quel os tu veux faire un programme en assembleur...
    Windows

    Citation Envoyé par Mat.M Voir le message
    si c'est sous Windows mais exe-cible ms-dos alors oui il faut faire une boucle de message comme le dit Obsidian.
    C'est à toi de tout gérer de A à Z
    Maintenant il est possible d'utiliser un assembleur comme MASM et de créer un programme exe-cible Windows /win 32 ( ou bien 64 )..
    Je ne comprends pas bien ta réponse. Que l'on soit en 16 ou 32 bit on peut appliquer le principe expliquer par Obsidian.
    Mais au final c'est bien sur une architecture X86 32 bits que je veux coder.

    Citation Envoyé par Mat.M Voir le message
    Mais faire un programme Windows en assembleur n'a aucun intérêt autant prendre un compilateur C/C++..
    Si moi je vois un interêt, le faire par curiosité.. Sinon, je n'aurais pas posté étant donné que j'ai déja codé des appli windows en C

    EDIT: Je n'ai pas vu ta réponse entre temps Obsidian. Donc oui en effet c'est bien sous windows. Sinon niveau langage moi c'est du C et du Java (Et visual Adelia au passage mais vu que c'est pas connu..)

    Mais de la programmation Windows, c'est essentiellement en Java que j'en ai fait. Ce qui n'est pas une aide puisque c'est l'environnement Java qui gère tout. En C j'ai essentiellement fait des petits programmes en invite de commande (petits jeux, manipulations de sockets etc..) et très peu d'appli windows à proprement parlé

  6. #6
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 377
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 377
    Points : 23 663
    Points
    23 663
    Par défaut
    Citation Envoyé par sepnar Voir le message
    Mais de la programmation Windows, c'est essentiellement en Java que j'en ai fait. Ce qui n'est pas une aide puisque c'est l'environnement Java qui gère tout. En C j'ai essentiellement fait des petits programmes en invite de commande (petits jeux, manipulations de sockets etc..) et très peu d'appli windows à proprement parlé
    L'ennui, c'est que le Java, non seulement ce n'est pas de la programmation en assembleur, mais ce n'est même pas de la programmation Windows non plus. Java a son propre environnement et ses propres interfaces qui, en coulisses sont mises en relation avec l'O.S. D'autre part, le bytecode n'est pas non plus du langage machine.

    Tu devrais essayer de faire un peu de C-API Windows, ou bien d'utiliser la X-Lib sous Unix. Le fonctionnement y apparaît beaucoup plus clairement.

  7. #7
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 377
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 377
    Points : 23 663
    Points
    23 663
    Par défaut
    Citation Envoyé par sepnar Voir le message
    Oui donc c'est bien ce qu'il me semblait, une routine analyse en continu une certaine table d'évènements et dès qu'un nouveau champ apparait, on traite la procédure correspondante.
    « Champ » n'est pas le terme exact. Ce serait plutôt une entrée dans ta table. Et plutôt qu'une « table », c'est surtout une file (un buffer circulaire) qui va te servir à recevoir les messages.

    Maintenant, ce que j'ignore totalement, c'est la nature de cette structure:
    Est-ce une structure définie et "remplie" par Windows?
    Comment la réupérer et l'exploiter?
    Ce qui veut dire, dans un premier temps, que tu travailles sous Windows, ce qui était loin d'être une évidence. Tu aurais pu utiliser Linux, D.O.S., un autre système d'exploitation encore, où même faire un logiciel de boot qui fonctionne complètement seul. Windows est un logiciel, au même titre que n'importe quelle application. À ce titre, c'est Windows qui utilise le micro-processeur et pas l'inverse.

    Si ce que tu veux faire, c'est créer une fenêtre Windows avec les boutons dont tu as l'habitude et récupérer les clics de l'utilisateur, par exemple, alors il faut faire exactement la même chose qu'avec les langages de plus haut niveau : communiquer avec le système d'exploitation en appelant les fonctions des différentes bibliothèques et en utilisant les appels système.

    Le mieux est peut-être de partir de ce que tu connais déjà (même si ce n'est pas toujours le cas quand on étudie l'assembleur). Quels langages utilises-tu ? Quels genre d'interfaces as-tu réalisé jusqu'ici et connais-tu le langage C ?

Discussions similaires

  1. [Gtk2-perl] Gestion des évenements pour l'appui d'une touche.
    Par GarulfoLinux dans le forum Interfaces Graphiques
    Réponses: 0
    Dernier message: 08/08/2007, 17h48
  2. Réponses: 2
    Dernier message: 19/06/2007, 11h59
  3. Gestion des évenements lors de la validation par le bouton entrée
    Par rattlehead dans le forum Windows Forms
    Réponses: 2
    Dernier message: 26/12/2006, 16h24
  4. [VB2005] Gestion des évenement dans une fonction
    Par arnolem dans le forum Windows Forms
    Réponses: 8
    Dernier message: 24/07/2006, 09h07
  5. [TComPort] gestion des évenements
    Par akabane dans le forum Composants VCL
    Réponses: 2
    Dernier message: 10/05/2006, 10h29

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