DEV-C++ ASM ? dev asm

[Résolu]
Signaler
-
Messages postés
20
Date d'inscription
mardi 11 octobre 2005
Statut
Membre
Dernière intervention
13 mars 2007
-
Bonjour,
 je voudrais savoir comment indégrer un code asm dans dev-c++ parceque _asm n'est pas reconnu.
Alors je voudrais savoir comment avertir au compilateur qu'il y a une partie de code en asm.
MaLaDeDeDe 97one

21 réponses

Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
9
Tenez vous bien, il est possible de faire de l'assembleur avec syntaxe intel sous gcc, la preuve ce code compile:

#include <stdio.h>

int x;

int main()
{
  asm
  (
    ".intel_syntax noprefix\n"
    "mov eax, 100\n"
    "mov _x, eax\n"
    ".att_syntax noprefix\n"
  );

  printf("%d", x);
}

_____________________________________
Un éditeur de ressources gratuit pour Windows
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
15
C'est de l'assembler AT&T alors oublie l'intel sous devcpp. ça fonctionne comme ceci:

asm ("mov %eax, %edx");

ce qui ce traduit en intel par

__asm mov edx, eax

___________________________________________
Les plus grands esprits trouvent toujours une solution

Ok mais ca veut dire quoi AT&T
et  pourquoi on peut pas intégré l'assembleur sans modification comme le fait vsc++

MaLaDeDeDe 97one
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
15
AT&T est une entreprise. Le compilateur gcc ne prend pas d'intel. C'est comme ça. Il est fait pour Linux. Il n'y a aucun moyen à ma connaissence.

___________________________________________
Les plus grands esprits trouvent toujours une solution

pk l'asm ca marche pas sur AMD ?

MaLaDeDeDe 97one
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
15
Aucun rapport. Ça fonctionne très bien puisque l'archithècture du processeur est le même qu'un intel à ce niveau. L'intel ne fonctionne pas sous gcc (gcc est le compilateur de DevCPP). C'est tout. Je ne sais pas pourquoi. C'est probablement le choix des dévelloppeur. Si tu veux faire de l'asm sous devcpp, il faut que tu change de méthode.

___________________________________________
Les plus grands esprits trouvent toujours une solution

Mais je comprend pas:
qu'entends tu part intel ( les processeur intel ?)
Et si l'architecture intel et amd est la meme pk ca marche pas ?
Si j'avais un processeur AMD ca aurait fait l'asm normalement ?

MaLaDeDeDe 97one
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
15
L'assembler Intel est une sorte d'assembler. L'assembler AT&T en est une autre. Ce n'est que la façon de l'écrire (si je peux dire) qui change. Quand une partie d'assembler AT&T est compilé avec gcc sous Windows, il sera transformé en assembler Intel car c'est l'archithècture de la majorité des processeurs actuel et c'est l'archithecture sous laquelle fonctionne Windows. Tu n'a pas à t'inquièter à savoir si l'assembler AT&T fonctionne sous intel ou amd, le compilateur s'occupe de tout.

___________________________________________
Les plus grands esprits trouvent toujours une solution

Ah oké tous est claire merci !
Bein ma derniere  question c'est comment intégré dans le code de l'assembleur AT&T ?

MaLaDeDeDe 97one
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
15
Ta pas d'autre choix que de changer ta méthode. Il faut faire de l'AT&T. J'ai jamais trouvé de tutorial AT&T ce qui est très decevant. J'ai fait quelque petite recherche. Je peut t'orienter sur la bonne voie mais c'est tout.

[ Manuel GNU Assembler

C'est tous ce que j'ai trouvé pour l'instant
]
___________________________________________
Les plus grands esprits trouvent toujours une solution
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
15
Revoici le lien. L'autre ne fonctionne pas:

http://www.gnu.org/software/binutils/manual/gas-2.9.1/html_chapter/as_16.html

___________________________________________
Les plus grands esprits trouvent toujours une solution

ok bein meci  pour tous

MaLaDeDeDe 97one
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
15
Tien j'en ai trouvé d'autre:

http://ares.x25zine.org/ES/txt/0x4553-Asm_tutor.htm
http://heather.cs.ucdavis.edu/~matloff/50/LinuxAssembly.html

___________________________________________
Les plus grands esprits trouvent toujours une solution

ok merci

MaLaDeDeDe 97one

ouiouiouioui!!!!!!!

MERCI

MaLaDeDeDe 97one
Messages postés
241
Date d'inscription
vendredi 23 mai 2003
Statut
Membre
Dernière intervention
8 octobre 2007
1
Merci vecchio, ça c'est bon à savoir !

eRoZion
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
15
Alors la vecchio je dois m'avouer vaincus. N'empêche qu'il fallait vraiment savoir comment. Maintenant que je sais comment faire tu peux pas t'imaginer à quel point ceci va m'aider.

___________________________________________
Les plus grands esprits trouvent toujours une solution

Demain je vais me fair un programme ou l'on met dans un fichier texte:



.intel_syntax noprefix\n
mov eax, 100\n
mov _x, eax\n
.att_syntax noprefix\n

et il en ressort:

 ".intel_syntax noprefix\n"
 "mov eax, 100\n"
 "mov _x, eax\n"
 ".att_syntax noprefix\n"

Pratique qyand le code fait 20 lignes et plus je le mettré dans une source du site:)

MaLaDeDeDe 97one 
Messages postés
20
Date d'inscription
mardi 11 octobre 2005
Statut
Membre
Dernière intervention
13 mars 2007

Comment on fait pour les sauts?
Normalement, on met un :
saut :
....................
jxx saut ;(où xx remplace ne,nz,e,mp,..........)
Mais ça marche pas....

Pole.
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
9
J'ai pas rencontré de problème avec les sauts...

#include <stdio.h>

int x;

int main()
{
  asm
  (
    ".intel_syntax noprefix\n"
    "mov eax, 200\n"
    "jmp truc\n"
    "mov eax, 100\n"
    "truc:\n"
    "mov _x, eax\n"
    ".att_syntax noprefix\n"
  );

  printf("%d", x);
}

_____________________________________
Un éditeur de ressources gratuit pour Windows