Accueil > Forum > > > > NASM et DEVCPP - fonction assembleur appellee en C/C++
NASM et DEVCPP - fonction assembleur appellee en C/C++
mardi 21 mars 2006 à 10:31:12 |
NASM et DEVCPP - fonction assembleur appellee en C/C++

jean84
|
Salut a tous ! Et bien comme le titre l'indique, je souhaiterai creer des fonctions en assembleur et pouvoir les appeller en C/C++ dans le meme projet. J'utilise devcpp 5 (beta) et nasm 0.98. J'ai vu divers tuto sur le net comme quoi il faut declarer la fonction global en asm, puis creer un fichier obj avec nasm mais tout ce que j'ai pu tester jusqu'a present c'est revele infructueux.... j'aimerai beaucoup pouvoir utilise ces 2 langages car je suis sur un moteur de jeux en 2D (genre zelda sur super nes) et je souhaiterai faire appelle a l'assembleur pour certains traitements... je precise que je suis completement novice en assembleur et que je ne souhaite pas changer de compilo (j'ai deja teste Visual C 6.O avec l'assembleur mais c'est vraiment trop limite). En vous remerciant  "Avant même de fonctionner, tout programme est déjà obsolète."
|
|
mardi 21 mars 2006 à 12:14:59 |
Re : NASM et DEVCPP - fonction assembleur appellee en C/C++

jean84
|
Alors apres quelques tours sur divers forums, j'ai trouve une syntaxe pour nasm... il faut assembler mon fichier avec les paramatres suivants : nasm -f win32 fichier.asm Cependant, j'ai toujours mon probleme avec dev... lorsque je link ma fonction pas de probleme je n'ai aucune erreur par contre lorsque je l'utilise, rien ne va plus ... Voila le code de mon fichier.asm :[section .text] GLOBAL Function ; La fonction prend comme parametre un pointeur sur int Function : xor eax, eax mov eax, [esp+4] add eax, 1 ret 4 [section .data] et voici mon code sous dev :#include <stdio.h> #include <stdlib.h> extern void Function( int * ); int main( void ) { int x = 0; while ( x <= 10 ) { Function(&x); printf("Valeur de x : %d.\n", x); } system("pause"); return 0; } C'est un exemple bateau mais si j'arrive deja a utilise sa, je ne pense plus avoir de gros probleme apres.... voici le code d'erreur transmis par dev : [Linker error] undefined reference to `Function(int*)' ld returned 1 exit status C:\Documents and Settings\jean\Bureau\test\Makefile.win [Build Error] [Project1.exe] Error 1 Merci pour vos eventuelles reponse  @+ "Avant même de fonctionner, tout programme est déjà obsolète."
|
|
mardi 21 mars 2006 à 18:08:11 |
Re : NASM et DEVCPP - fonction assembleur appellee en C/C++
|
mardi 21 mars 2006 à 18:12:46 |
Re : NASM et DEVCPP - fonction assembleur appellee en C/C++
|
mardi 21 mars 2006 à 20:38:43 |
Re : NASM et DEVCPP - fonction assembleur appellee en C/C++

BruNews
|
Jean84 > en quoi c'est limite l'asm dans VC++ ??? On insère direct les fichiers ASM dans le projet donc en PUR ASM, je ne vois pas en quoi on serait donc limité.
Fichier ASM dans Visual Studio Clic droit sur fichier, Settings et mettre ml.exe -c -coff -Cx -Fo$(IntDir)\$(InputName).obj $(InputName).asm $(IntDir)\$(InputName).obj
VS 2005: Clic drot propriétés sur fichier ASM: General: Custom Build Tool Command Line: ml64.exe -c -Cx /nologo -Fo$(IntDir)\$(InputName).obj $(InputName).asm Outputs: $(IntDir)\$(InputName).obj
ciao...
[ Lien ] BruNews, MVP VC++
|
|
jeudi 23 mars 2006 à 15:06:35 |
Re : NASM et DEVCPP - fonction assembleur appellee en C/C++

jean84
|
BruNews => Heu en fait il y a quelque temps ne possedant pas de compilateur asm, je me suis tourne vers Visual C 6.0 pour ecrire des routines en assembleur car je savais que cet edi gere la fonction asm{} mais helas il y a quelques fonctions en assembleur qui n'etait pas parfaite comme par exemple si tu utilise un offset + la valeur d'un registre pour te deplacer, Visual C me repondait que l'instruction n'etait pas reconnu (maintenant, sachant que je suis un debutant et que je n'ai pas la science infuse, c'est possible que j'ai pu me tromper dans la redaction de mon code mais j'ai quand meme essaye pas mal de fois et de differente manieres ...) et puis par rapport a mon probleme actuel, je n'aime pas trop utilise Visual C car deja ma license n'est pas la mienne a proprement parle (merci le net) et que je trouve que c'est une usine a gaz par rapport a dev (mais bon la on s'eloigne du sujet). Je vais bien entendu tester ta solution et je te remercie d'avoir pris le temps de me repondre.
Patatalo => je savais bien que je faisait une erreur en ne mettant que add eax, 1 au lieu de add dword[eax] , 1 mais c'est encore trop nouveau pour moi, j'ai un peu de mal... Et quand tu parles de "underbarre", j'imagine que tu veux dire "underscore" a la place non ? Et ou le mettre ? Dans la decalration de la fonction en C ou dans le fichier asm a cote de GLOBAL ?? J'ai egalement essaye de linker avec Visual C mais pareille, quand je ne mettais que obj a la place de win32 dans les parametres de nasm, Visual me disais carrement que mon fihcier obj etait corrompu mais depuis le nouveau parametre, la il me dit simplement qu'il n'arrive pas a linker la fonction demande....
Au secours SVP !!! J'ai vraiment besoin d'y parvenir mais la je seche completement !!!  @++
"Avant même de fonctionner, tout programme est déjà obsolète."
|
|
lundi 27 mars 2006 à 08:46:40 |
Re : NASM et DEVCPP - fonction assembleur appellee en C/C++

Nasman
|
Bonjour jean84,
En regardant la déclaration de ta fonction sous Nasm, je me demande s'il ne manque pas la directive export pour définir le nom de ta fonction.
Essaie la déclaration suivante:
[section .text] GLOBAL Function Export Function
C'est le type de déclaration à mettre lorsque l'on créé une dll avec Nasm. Est-t-elle nécessaire si l'on lie le fichier objet au projet lors de l'édition de liens, je ne sais pas.
Autre chose : est-ce que le nom de "Function" (si c'est réellement le nom que tu as déclaré) ne correspond pas déjà avec un autre type d'objet ?
A+
|
|
lundi 27 mars 2006 à 10:52:06 |
Re : NASM et DEVCPP - fonction assembleur appellee en C/C++

jean84
|
Oh merci pour l'astuce... je n'y avais pas pense... et c'est vrai que sa parait logique.... je vais essaye sa des ce soir et je te dirais si cela focntionne... Pour le nom 'Function', c'etait uniquement un nom generique que j'ai mis lorsque j'ai code l'exemple pour le forum mais meme avec d'autre nom sa ne passe pas (exemple : MyFunction() et DetectColision() - je fais un moteur 2d avec SDL- ), j'obtiens toujours la meme erreur... je verrais ce soir sans faute... Merci a toi Nasman !  "Avant même de fonctionner, tout programme est déjà obsolète."
|
|
lundi 27 mars 2006 à 11:23:22 |
Re : NASM et DEVCPP - fonction assembleur appellee en C/C++

jean84
|
Alors sa y est j'ai tester et je viens d'avoir une nouvelle erreur (la 4e exactement). Dev me repond avec un " symbol not found " est rien d'autre (pas de numero de ligne, pas de fichier particuliers mis en cause....). Sniff je suis decu....  .... pas d'autre idee... "Avant même de fonctionner, tout programme est déjà obsolète."
|
|
jeudi 30 mars 2006 à 10:56:06 |
Re : NASM et DEVCPP - fonction assembleur appellee en C/C++

Nasman
|
Bonjour jean84,
En relisant ma doc sur Nasm j'ai trouvé une raison qui pourrait expliquer le message d'erreur [Linker error] undefined reference to `Function(int*)' Sauf erreur de ma part: Lorsque l'on compile un programme en C avec une fonction appelée Function, le nom exporté est _Function. Lorsque l'appel provient d'un programme écrit en C (appel de Function), le programme compilé recherchera le nom de _Function.
Pour que ta routine écrite avec Nasm puisse être appelée avec un programme en C, il faut que son nom soit _Function.
Soit [section .text] GLOBAL _Function ; La fonction prend comme parametre un pointeur sur int _Function : xor eax, eax mov eax, [esp+4] add eax, 1 ret 4
Remarque: l'instruction xor eax, eax est inutile ici
A+
|
|
Cette discussion est classée dans : fonction, assembleur, devcpp, nasm, appellee
Répondre à ce message
Sujets en rapport avec ce message
rs232 & assembleur& c++ version microsoft [ par elbair32 ]
bonjour;je n'arrive pas à ecrire une fonction sur c++ en utilisant dedant des mnemoniques Tasm pour gérer les ports série je sais comment sa se fait e
Quel assembleur choisir ? [ par trinitacs ]
J'aimerai savoir quel est le meilleur assembleur qui existe ou si il en faut mixer. Je début difficielment l'asm avec NASM. Faut-il choisir MASM, TASM
mettre un son avec nasm [ par ricardvince ]
bonjour je suis debutant en assembleur et jaurais aimais savoir s'il ete possible de mettre un son dans un programme en assembleur (avec nasm)???merci
Quel est l'assembleur le plus rapide ? [ par epineurien ]
Salut à tous !Une nouvelle question , suite à quelques infos trouvées sur le net ...J'utilise MASM32 , mais de nombreux sites dises qu'il produit un c
assembleur [ par calamsro ]
j'ai commencé à étudier le langage machine l'assembleur que j'utilise est nasm mais manifestement la plupart des sources asm proposées sont faites pou
function et assembleur de delphi [ par barbichette ]
Bonjour,j'ai un souci avec l'assembleur.J'ai un type TMyType=array[0..100] of byte;et une fonction :Function Calcul(a,b:TMyType):TMyType;assembler;asm
[nasm] ligne de commande [ par Kevin68 ]
Bonjour :),Je suis débutant en assembleur, j'utilise nasm sous linux.J'ai cherché partout un exemple de code source qui me permettrait de récupérer le
Fonction pour prendre la souris en assembleur. [ par nico20011caus ]
Je fais de l'assembleur un peut et je voudrai savoir comment qu'on fait pour prendre la souris en assembleur.Moi je fait: mov ax,1 &n
Format d'assemblage win32 avec Nasm [ par Nasman ]
Bonjour, En relisant la documentation de Nasm j'ai vu que pour obtenir un fichier win32 executable il était possible d'utiliser le format suivant: na
cours assembleur 68000 [ par ofthechurch ]
Bonjours, je cherche des tuoriels, des cours ou des livres portant sur la prorammation en assembleur sur 68000, j'ai trouvé quelque vague trucs sur go
Livres en rapport
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|