begin process at 2012 05 29 04:05:06
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Instruction Assembleur CDQ en langage C


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Instruction Assembleur CDQ en langage C

mercredi 28 décembre 2005 à 14:36:45 | Instruction Assembleur CDQ en langage C

skirby

Bonjour tout le monde,

j'aurais voulu savoir comment traduire en langage C le petit bout d'assembleur suivant.

MOVSX EDI, var1
MOV EAX, EDI
IMUL EDI
CDQ
XOR EAX,EDX
SUB EAX,EDX


En fait, la partie qui me pose problème est en rouge.

Au début, j'utilisait une variable de type double mais je ne sais pas comment faire pour récupérer les 32 bits de poid fort d'une variable de type double dans une variable de type long puisqu'on ne peut pas faire d'opération de décalage sur un type double.
De plus, la commande CDQ étend le bit de signe aux octets de poid fort. Donc EDX peut valoir 00000000 ou FFFFFFFF en fonction du bit de signe de EAX.

J'avoue ne pas savoir comment faire. J'espère avoir été clair.

Merci d'avance pour votre aide et A+
mercredi 28 décembre 2005 à 19:16:15 | Re : Instruction Assembleur CDQ en langage C

deck_bsd

Membre Club
Pourquoi traduire? tu na qu'à l'éxécuter dans le code soit :

__asm{ tes intructions
 }

ou :

__asm instruction 1
__asm instruction 2
...

Bon code

++ALL


jeudi 29 décembre 2005 à 01:12:37 | Re : Instruction Assembleur CDQ en langage C

ctx_man

Je connais pas l'assembler donc je ne capte pas vraiment ske tu veut faire. Mais tu dis vouloir recuperer les 32 premiers bits (poid forts) de ton double en les mettant dans un long. Un simple pointeur et le tour est joué :

double var;
long *ptr = (int*)&var; //Tu aura certainement un warning pour perte de donnee mais *ptr correspond bien au 32 premiers bits de ton double, inependemment de l'interpretation du signe et de la virgule du type double.

Le travail c'est la santé, ne rien faire c'est la préservé !!!
jeudi 29 décembre 2005 à 01:14:06 | Re : Instruction Assembleur CDQ en langage C

ctx_man

le cast c en long qu'il faut le faire, dsl pour cette etourderie.

Le travail c'est la santé, ne rien faire c'est la préservé !!!
jeudi 29 décembre 2005 à 11:38:45 | Re : Instruction Assembleur CDQ en langage C

skirby

Merci pour vos réponses.
En fait, j'ai trouvé une autre solution. Je compile mon code assembleur et j'inclu le fichier .o à mon édition des liens.

Sinon, par curiosité je vais essayer ton astuce ctx_man.

En ce qui concerne ta proposition deck_bsd, il faut que je cherche comment on utilise l'assembleur en ligne dans DEV-CPP (donc avec le compilateur gcc je crois)

Merci et A+


Cette discussion est classée dans : type, assembleur, langage, eax, cdq


Répondre à ce message

Sujets en rapport avec ce message

trés urgent [ par salim_samir ] salut à tous pouvez vous m'aider par un simple exemple comment je peut réaliser un compteur en langage assembleur pour un microcontroleur 68HC11E2 pa Debugage assembleur [ par crocejf2000 ] Salut,Qq'un pourrai il peut etre m'aider, j'ai une méchante érreur et jmy connais pas trop en assembleur, Borland c++ 5 me renvoi ceci : Il s'arrete a assembleur en ligne avec gcc [ par nalk_deen_mook ] Bonjour j'aurais aimé savoir pourquoi lorsque je compile ce bout de code, j'ai une erreur de segmentation merci d'avance#include int main(){  int a=10 linux [ par rawen ] svp vou pouvez m'aider de faire un mini compilateur en langage lex/yacc pour qu'il puisse faire compiler 3 boucles en langage C -la boucle for -la bou "le jeu de la vie"en langage c [ par jca85 ] salut a tous.je suis étudiant et j'ai un gros probleme:je dois realiser un "jeu de la vie"fonctionnant sous pelles c.Si quelqu'un peut m'envoyer un so langage C [ par wesslett ] je suis débutant et nouveau  dans ce forum ....!! Comment peut on afficher la date et l' heure lors d'une saisie de données dans un fichier ".txt"...! Variable de type char [ par wolfcyber ] bonjour, J'aimerais savoir l'equivalent en C++ de la fonction "Mid(int nStart,int nCount)" de la classe CString, pour une variable de type char. Cet Vérifier le type d'une variable [ par Radama ] Slt ! J'aimerai savoir comment on fait en C pour vérifier le type d'une variable et empêcher qu'on entre un caractère au lieu d'un entier,etc,etc,... PLM51 [ par jeromedu94 ] J'ai un projet à réaliser et c'est à base de langage PLM51, et on m'a dit que ça ressemblait pas mal au langage C, donc je voulais savoir, si quelqu'u Langage c [ par wesslett ] Comment peut on enregistrer et afficher automatiquement la date et l'heure du pc lors d'une simulation d'un programme en


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,014 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales