|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
Sujet : NASM et DEVCPP - fonction assembleur appellee en C/C++ [ Archives / c, c++ et asm ] (jean84)
Informations & options pour cette discussion
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é 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
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
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
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
Directive Invoke [ par bazole ]
BonjourJ'étudie la possibilité de créer un petit assembleur sous windows, et j'ai du mal à comprendre comment faire appel à une API windows.Sous Masm,
Livres en rapport
|
Téléchargements
Logiciels à télécharger sur le même thème :
|