Répondre à la discussion
Affichage des résultats 1 à 5 sur 5

Mixer le C et l'assembleur avec IAR dans un fichier source



  1. #1
    BiDoU1983

    Je tente de trouver le moyen d'utiliser et de l'assembleur et du C dans un seul même fichier source avec le compilateur IAR pour le microcontrôleur ATMEL AT89S8252.

    Bref, je fouille un peu partout sur le Web et je vois que cette fonction a l'air d'être intégré, je fouille dans l'aide du logiciel mais je ne trouve absolument rien.

    Quelqu'un saurait s'il existe une directive avec IAR pour indiquer au compilateur que le code suivant est en assembleur ?

    Merci.


    P.S.: Je ne savais trop où m'adresse pour cette question, enfin, j'y vais dans le forum qui me semble le plus propice...

    -----

  2. Publicité
  3. #2
    Jack
    Modérateur
    salut,

    tu devrais regarder du côté des directives #pragma. De nombreux compilateurs les utilisent pour permettre de modifier le comportement du compilateur et d'ajouter ainsi des possibilités non prévues par le standard.

    Sinon, tu as toujours la possibilité de créer ton source assembleur à part et de le linker avec celui en C.

    A+

  4. #3
    BiDoU1983

    Citation Envoyé par Jack
    Sinon, tu as toujours la possibilité de créer ton source assembleur à part et de le linker avec celui en C.

    A+

    Pour le #pragma j'ai vérifié et rien à faire.. Keil le supporte (#pragma asm et #pragma endasm) Sauf que j'ai un problème avec Keil (j'arrive pas à envoyer mon programme comme il faut en RAM externe, enfin...)


    Donc, j'aime bien la possibilité d'utiliser un fichier source à part en assembleur et de le linker. Sauf que y'a un hic. Ma fonction en assembleur, elle reçoit un paramètre, un entier. Je me demande comment je pourrais réaliser le tout. Enfin, pour qu'une fonction en assembleur reçoive un paramètre en C...

  5. #4
    monnoliv

    Si ça peut t'aider, la transmission des paramètres C-Assembleur avec le KEIL se fait par les registres. Par exemple, le premier argument de la fonction, si c'est un byte, va dans le registre R1 (exemple), si c'est un int, va dans les registres R1 et R2. Même topo pour les retours de fonction.
    Bàt,
    Ne soldez pas grand mère, elle brosse encore.

  6. A voir en vidéo sur Futura
  7. #5
    Jack
    Modérateur
    Pour récupérer les paramètres, ça dépend des compilateurs, Il faut regarder le manuel.

    En principe, il faut dépiler l'adresse de retour de la fonction, puis dépiler les paramètres et restituer l'adresse de retour dans la pile.
    Cependant, comme le dit monnoliv, certains compilateurs optimisent le temps d'appel de la fonction en passant les paramètres par des registres.

    A+

Discussions similaires

  1. Ecrire des donnees dans un fichier .txt avec MATLAB
    Par ghislaine dans le forum Logiciel - Software - Open Source
    Réponses: 9
    Dernier message: 24/10/2011, 16h03
  2. erreur 1308 fichier source introuvable\ccommun\NMAIN.exe
    Par coolzen dans le forum Matériel - Hardware
    Réponses: 24
    Dernier message: 06/03/2007, 19h02
  3. Intéressé dans un projet de traduction open-source?
    Par calande dans le forum Logiciel - Software - Open Source
    Réponses: 12
    Dernier message: 26/11/2006, 00h13
  4. équation d'onde avec source
    Par alovesupreme dans le forum Physique
    Réponses: 4
    Dernier message: 23/09/2006, 08h45
  5. dosage dans une eau de source
    Par raphias21 dans le forum Chimie
    Réponses: 4
    Dernier message: 04/04/2006, 20h21
Découvrez nos comparatifs produits sur l'informatique et les technologies.