Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2189 connectés 

  FORUM HardWare.fr
  Programmation
  ASM

  prob tout con (je pense) d'asm en ligne en C

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

prob tout con (je pense) d'asm en ligne en C

n°716806
Dri
Là, c'est moi...
Posté le 05-05-2004 à 21:13:57  profilanswer
 

Salut, je suis nouveau sur le forum
 
Je programme en C et depuis pas si longtemps j'ai eu envie d'ajouter de l'assembleur dans mes sources pour répondre à des besoins spécifiques. J'ai donc commencé à me documenter sur l'assembleur en ligne et uniquement  ce dont j'avais besoin.
 
Une des choses dont j'ai eu besoin c'est de récupérer une valeur a partir du registre ax et de le mettre dans une de mes variables déclarée dans la partie C du programme. Et là open watcom m'a tout simplement répondu :non: (enfin ca compile mais la ligne est ignorée donc la variable inutilisée)
 
Voila le bout de code :

Code :
  1. int statut;
  2.   _asm
  3.   {
  4.     mov statut, ax
  5.   }
  6.   return statut;


 
J'espère donc que quelqu'un sera en mesure de me répondre
 
Dri :hello:
 
PS. j'ai essayé pas mal de trucs, mais j'ai mis en gros ce que je voudrais que ca fasse (statut = ax)

mood
Publicité
Posté le 05-05-2004 à 21:13:57  profilanswer
 

n°716817
drasche
Posté le 05-05-2004 à 21:28:31  profilanswer
 

essaie avec ça: __asm (2 underscores au lieu d'un seul).


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°718031
jesus_chri​st
votre nouveau dieu
Posté le 06-05-2004 à 23:19:38  profilanswer
 

non _asm ça marche aussi
c'est un pb de taille :
int c'est 4 octets, ax ça en fait deux
 
essaye :
 
unsigned short statut;  
    _asm  
    {  
        mov statut, ax  
    }  
    return (int)statut;


Message édité par jesus_christ le 10-05-2004 à 22:16:51
n°718091
bjone
Insert booze to continue
Posté le 07-05-2004 à 04:53:12  profilanswer
 

mov statut,eax

n°718092
bjone
Insert booze to continue
Posté le 07-05-2004 à 04:54:58  profilanswer
 

sinon regarde le genre de synthaxe que tu peux avoir avec le watcom:
 
char *VLine(void *tgt, long cl, long y, long ax);
#pragma aux VLine =          \
"Lp: mov DWORD PTR[edi],eax" \
    "add edi,ebx"            \
    "dec ecx"                \
    "jnz Lp"                 \
parm [edi][eax][ecx][ebx] modify [edi ecx] value [edi];


Message édité par bjone le 07-05-2004 à 04:57:07
n°718129
drasche
Posté le 07-05-2004 à 09:27:57  profilanswer
 

bjone a écrit :

mov statut,eax


oooops :whistle:


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°720609
Dri
Là, c'est moi...
Posté le 10-05-2004 à 14:30:19  profilanswer
 

J'avai essayé char int et long, mais short je l'utilise tellement pas souvent que... Bah merci beaucoup c'était exactement ca le problème.
 
Dri :D

n°724491
christophe​_d13
L'efficacité à tout prix.
Posté le 13-05-2004 à 11:45:11  profilanswer
 

long et int ont souvent la même capacité... 32 bits.
Souvent, mais pas toujours.

n°724876
bjone
Insert booze to continue
Posté le 13-05-2004 à 16:22:35  profilanswer
 

bin ça dépends, si en l'occurence, tu compiles pour une cible 16bits (mode réel), ou 32bits (mode protégé).
 
il a pas précisé quel était le système ciblé (dos, dos+dos4gw/pmodew,win32....)
 
mais vu que le mov status,ax échoue, c'est qu'il est soit en dos+dos4gw/pmodew soit en win32.

n°725217
jesus_chri​st
votre nouveau dieu
Posté le 13-05-2004 à 21:10:20  profilanswer
 

christophe_d13 a écrit :

long et int ont souvent la même capacité... 32 bits.
Souvent, mais pas toujours.

la régle C c'est, pour la taille ;
 
char <= short <= int <= long
 
sachant que sur certains systèmes "exotiques" avancés (donc ni PC ni Mac) ils peuvent tous êtres égaux à 8 (64-bits) !
 
même (sizeof(char) == 1) n'est pas toujours vrai en C (mais toujours vrai sur PC)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  ASM

  prob tout con (je pense) d'asm en ligne en C

 

Sujets relatifs
[MYSQL] prob bizarre ma requete ne me renvoi que le premier résultatThread, prob libération mémoire
Probleme permutation ligne tableaurecuperer les valeurs d'une ligne de tableau
prob entre flash et internet explorer (javascript)[VB .NET]Prob de refresh avec ListBox et un Dataview
HTML : aligner à gauche et à droite sur la même ligne ?Saut de ligne dans une propriété title ?
[JAVA] Compraison de chaines, erreur de débutant je penserecuperer la premiere ligne d'un tableau
Plus de sujets relatifs à : prob tout con (je pense) d'asm en ligne en C


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)