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 :

code assembleur


Sujet :

C

  1. #1
    Membre éclairé

    Inscrit en
    Décembre 2005
    Messages
    260
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 260
    Par défaut code assembleur
    bonjour
    ma question est simple comment on peut insérer un code assembleur dans un code c et merci

  2. #2
    Expert confirmé

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Par défaut
    Citation Envoyé par zerocoolyoussef
    bonjour
    ma question est simple comment on peut insérer un code assembleur dans un code c et merci
    Cela dépend du compilateur, tu utilises lequel?

    Jc

  3. #3
    Membre expérimenté Avatar de damienlann
    Profil pro
    Étudiant
    Inscrit en
    Mai 2005
    Messages
    293
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2005
    Messages : 293
    Par défaut
    _asm{
    //code assembleur
    }
    je ne suis pas certain que se soit portable.
    et aprés effectivement
    Cela dépend du compilateur

  4. #4
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Par défaut
    Apparemment c'est possible en C99 : http://www.developpez.net/forums/sho...8&postcount=44

  5. #5
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380

  6. #6
    Membre éclairé

    Inscrit en
    Décembre 2005
    Messages
    260
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 260
    Par défaut
    ben j'utilise le compilateur turbo c++.

  7. #7
    Membre éclairé

    Inscrit en
    Décembre 2005
    Messages
    260
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 260
    Par défaut
    ouiiii ca marché le truc de _asm{ } avec mon compilateur merccii

  8. #8
    Membre Expert
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Par défaut
    L'assembleur? mais pourquoi faire?

  9. #9
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    Citation Envoyé par Gruik
    L'assembleur? mais pourquoi faire?
    Gagner la moindre micro-seconde, le moindre octet.

  10. #10
    mat.M
    Invité(e)
    Par défaut
    Citation Envoyé par Gruik
    L'assembleur? mais pourquoi faire?
    Bof avec Turbo C++ on peut toujours faire du VGA 320*240 ; on apprend comme ça

    Tu peux essayer de programmer le VESA mais il faut toucher à l'EMS , XMS

  11. #11
    Membre Expert
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Par défaut
    Si il s'agit d'acceder à certaines adresses speciales (memoire video & co), on peut le faire aussi en C

  12. #12
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Gruik
    Si il s'agit d'acceder à certaines adresses speciales (memoire video & co), on peut le faire aussi en C
    ... non portable.

  13. #13
    Membre Expert
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Par défaut
    Faire ceci n'est pas portable?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    volatile unsigned char * memoire_speciale = 0xA000;
    memoire_speciale[43] = 33;

  14. #14
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Gruik
    Faire ceci n'est pas portable?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    volatile unsigned char * memoire_speciale = 0xA000;
    memoire_speciale[43] = 33;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    main.c:37: warning: initialization makes pointer from integer without a cast
    J'ai insisté : j'ai eu une 'exception' (normal sur une machine avec MMU : Windows XP).

    Donc, non, ce n'est pas portable. (même avec le cast (unsigned char *) évidemment). Ca peut être compilable, mais le comportement est indéfini.

  15. #15
    Membre Expert
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Par défaut
    Ah oui mais je parlais pas de ça, c'est normal l'OS interdit d'acceder aux adresses speciales comme ça
    (enfin c'était possible sous dos)
    Mais comme visiblement il veut faire une application dos pour faire du VESA, c'est comme ça que ça marche
    Si on l'avait fait en assembleur yaurait eu la meme exception sous XP

  16. #16
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Gruik
    Ah oui mais je parlais pas de ça, c'est normal l'OS interdit d'acceder aux adresses speciales comme ça
    (enfin c'était possible sous dos)
    Mais comme visiblement il veut faire une application dos pour faire du VESA, c'est comme ça que ça marche
    Si on l'avait fait en assembleur yaurait eu la meme exception sous XP
    sous DOS (Borland C), on ne fait pas comme ça non plus, mais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    #include <dos.h>
    /* assuming memory model LARGE */
    volatile unsigned char * memoire_speciale = MK_FP (0xA000, 0x0000);
    memoire_speciale[43] = 33;
    Ce qui est loin d'être portable.

  17. #17
    mat.M
    Invité(e)
    Par défaut
    Citation Envoyé par Gruik
    Si il s'agit d'acceder à certaines adresses speciales (memoire video & co), on peut le faire aussi en C
    Oui il faut utiliser un pointeur "long" avec MK_FP comme l'illustre Emmannuel.
    On peut utiliser si mes souvenirs sont bons l'union REGS et appeler des interruptions.
    Mais effectivement c'est pas portable

  18. #18
    Membre éclairé

    Inscrit en
    Décembre 2005
    Messages
    260
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 260
    Par défaut pourquoi faire?
    bon

    personnellement je suis entrain de réaliser dans le cadre d'un projet un systeme de gestion de fichiers ou on ecrit directement dans la disquette sans passé par le systeme d'exploitation puisqu' on le représente nous même.J'ai besoin du code assembleur seulement pour ecire/lire un secteur physique dans une disquette

  19. #19
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par zerocoolyoussef
    personnellement je suis entrain de réaliser dans le cadre d'un projet un systeme de gestion de fichiers ou on ecrit directement dans la disquette sans passé par le systeme d'exploitation puisqu' on le représente nous même.J'ai besoin du code assembleur seulement pour ecire/lire un secteur physique dans une disquette
    Pouquoi faire ? Les fonctions du C (fopen(), fgetc(), fread() fwrite() etc.) ne te conviennent pas ?

    Sinon, il doit certainement exister des fonctions de bas niveau (équivallentes aux fonctions BIOS[1] d'un PC) qui font ce que tu veux faire. Quel est ton système ?


    ------------------------
    [1] INT 13, 15, 16, 17 http://www.netnam.vn/unescocourse/os...m%20the%20BIOS

  20. #20
    Membre éclairé

    Inscrit en
    Décembre 2005
    Messages
    260
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 260
    Par défaut ca marche pas sous linux
    bonjour
    ben regardez ca marchez avec le compilateur turbo c++ quand je voulais integrer un code asembleur il me suffisait de mettre _asm{
    -----code asembleur
    }
    Mais quand j'ai orienté mon programme vers linux le gcc n'accepte pas cette ecriture.Alors si une personne connait comment on peut resuodre ce problème

Discussions similaires

  1. [ST6] Besoin d'aide code assembleur
    Par doutsie dans le forum Autres architectures
    Réponses: 16
    Dernier message: 06/02/2006, 16h30
  2. Editer/colorer syntaxiquement du code assembleur
    Par gnogno dans le forum Langage
    Réponses: 8
    Dernier message: 26/09/2005, 22h34
  3. Réponses: 5
    Dernier message: 21/12/2004, 18h12
  4. Outils d'analyse statique de code assembleur ?
    Par atomic dans le forum Assembleur
    Réponses: 4
    Dernier message: 11/06/2004, 11h42
  5. Peut-on faire du son juste avec du code assembleur ?
    Par Rick1602 dans le forum Assembleur
    Réponses: 7
    Dernier message: 26/03/2004, 17h39

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