begin process at 2012 05 28 09:24:26
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

ASM inline et mingw (GCC)


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

ASM inline et mingw (GCC)

mercredi 19 avril 2006 à 09:56:17 | ASM inline et mingw (GCC)

skirby

Bonjour tout le monde,

J'aimerais mettre de l'assembleur inline dans mon code en C.
J'utilise Code::Block et mingw.

Voici un extrait de code qui ne veut pas fonctionner :

int tmp;   // Variable globale pour pourvoir être utilisé dans le code asm

int fnt(char* s) {
  int a;
  for (int i = 0; i < strlen(s); i++) {
    tmp = (unsigned char)s[i];

// Ce morceaux de code fonctionne (passage par un registre)
//    asm(".intel_syntax noprefix \n"
//        "mov eax, _tmp \n"
//        "sar eax, 0x45 \n"
//        "mov _tmp, eax \n"
//        ".att_syntax \n"
//        "\n");

// Pas celui la
// Le message d'erreur est le suivant : 1\Temp\ccOEaaaa.s:100: Error: ambiguous operand size for `sar'
    asm(".intel_syntax noprefix \n"
        "sar _tmp, 0x45 \n"
        ".att_syntax \n"
        "\n");

    a += tmp;
  }

  return a;
}


Une idée ?

Merci d'avance pour votre aide.
mercredi 19 avril 2006 à 10:20:08 | Re : ASM inline et mingw (GCC)

BruNews

Administrateur CodeS-SourceS
un shift de 69 positions sur un registre 32 bits ???

ciao...
BruNews, MVP VC++
mercredi 19 avril 2006 à 11:20:41 | Re : ASM inline et mingw (GCC)

skirby

Salut BruNews,

La n'est pas le problème car même si je mets 0x05 par exemple, j'ai le même message d'erreur.
1\Temp\cciOaaaa.s:63: Error: ambiguous operand size for `sar'

De plus, SAR n'est pas la même chose que SHR.

Explication :
		       +------------------------------+     +----+
SHR 0 ----->| |---->| CF |
+------------------------------+ +----+

+------------------------------+ +----+
SAR +-->| |---->| CF |
| +------------------------------+ +----+
+-----+

Si je compile le code asm inline suivant avec Microsoft Visual C++ Toolkit 2003
__asm { sar tmp, 0x45 }
ça fonctionne sans problème.

Une idée ?

mercredi 19 avril 2006 à 11:33:11 | Re : ASM inline et mingw (GCC)

BruNews

Administrateur CodeS-SourceS
merci pour sar....

Mets ton nbr en format décimal, tu verras si c'est format hexa qu'il n'aime pas, sait-on jamais.

ciao...
BruNews, MVP VC++
mercredi 19 avril 2006 à 13:06:43 | Re : ASM inline et mingw (GCC)

skirby

Réponse acceptée !
Pas de quoi pour sar
Je vais bien dormir ce soir car j'ai réussi à apprendre quelque chose à BruNews ;o)

Blague à part, j'ai fini par trouvé la solution. En fait, c'était plutôt logique.
Il suffisait d'écrire ceci :

    asm(".intel_syntax noprefix \n"
        "sar dword ptr _tmp, 0x45 \n"
        ".att_syntax \n"
        "\n");

Voila pour ceux que ça intéresse et que ça pourrait dépanner.

Merci BruNews.

A+

mercredi 19 avril 2006 à 17:32:36 | Re : ASM inline et mingw (GCC)

DeAtHCrAsH

Quel différence entre SAR et SHR ?

Shell
mercredi 19 avril 2006 à 20:34:47 | Re : ASM inline et mingw (GCC)

skirby

Salut DeAtHCrAsH,

Jettes un oeil ici et tu comprendras
http://www.iut-arles.up.univ-mrs.fr/eremy/dut/Archi/asm.html#sar

A+


Cette discussion est classée dans : code, int, asm, tmp, syntax


Répondre à ce message

Sujets en rapport avec ce message

ASM et C++ [ par rastafari ] Pourquoi est-ce que ce programme génère une erreur à l'éxécution?int f(){ __asm</font color="#0000F connection BDD en C [ par naru ] Bjr J'ai un code dans lequel je dois modifier le chemin de la bdd, et rentrer les paramètres de l'utilisteur (login/pass). Seulement, je ne vois pas pb comprehension (int*) VC++ // TC++ [ par BarthOlivier ] Salut ,J'ai rencontré un truc marrant que je n'arrive pas a expliquer... voici le code :#include "stdafx.h"#include "stdio.h"#include "conio.h"#define C++ switch [ par blastmanu ] Bonjour tt le monde!Et oui j'ai encore une question je voudrais savoir si il est possible de declarer une variable a l'interieur d'une boucle switchpa fonction apply / template [ par pointejb ] Bonjour à tous,Je cherche un moyen d'implémenter une fonction de type 'apply' qui prendrait en parametres une fonction et ses arguments et qui aurait pb code [ par rafffel ] voici le code je veux cree une boucle infini qui rempli tout l'ecran de nombre mais le prob c que ds le code ci dessous il y a en bas un demi ligne qu Utilisation DLL SANS .lib [ par nasedo47 ] J'ai récupéré une DLL sur un site ainsi qu'une page avec les prototypes de toutes les fonctions contenues dans cette DLL.J'aimerais utiliser ces fonct [Lieur Erreur] Unresolved external Vehicule::~Vehicule() [ par _gwada_ ] Je comprend plus rien et ce c++ commence a me rendre chevre.... :x j'ai editer mes class avec ClassBuilder puis generer le code depuis.sans rien touch jeu le serpent [ par Horfee ] bon je suis tout nouveau en C et j'ai un petit probleme :j'ai codé le jeu du serpent, assez rapidement mais j'ai un probleme : dès que j'appuie sur un Problème ac du inline asm [ par oceax ] Bonjour,je suis débutant en c++ et n'y connais pas encore énormément gd chose...Sur mon dernier programme (un keygen pr crack me que j'ai créé par mes


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 : 2,449 sec (3)

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