Compile pas mon asm - C++ - Programmation
Marsh Posté le 18-10-2004 à 14:08:46
deja c'est #include <iostream> et pas #include <iostream.h>
et ensuite si tu veux acceder au port // utilise les fonctions de l'api windows, pas ton code asm qui risque de faire prout (pour cause de protection)
Marsh Posté le 18-10-2004 à 14:11:10
cad ? comment faire autrement que en utilisant du asm ? tu as un lien vers doc pour ces API ? merci
Marsh Posté le 18-10-2004 à 14:11:52
heuh ben msdn.microsoft.com () et sinon fais une recherche sur ce meme forum, la question revient assez frequemment
Marsh Posté le 18-10-2004 à 14:11:56
Déjà pour le warning tu peux remplacer
Code :
|
par
Code :
|
Ensuite, je ne connais pas l'assembleur, mais dans un de mes livres où il y a des passages en assembleur je vois un __asm {} à la place ton asm {}. Ca peut peut-être aider Je sais pas
Marsh Posté le 18-10-2004 à 14:13:47
déjà aprés tes modifications c'est bien mieux, il y a moins de problèmes à la compilation.
Citation : Compilateur: Default compiler |
Marsh Posté le 18-10-2004 à 14:26:02
tu pourrais me dire quel api je dois utiliser si c'est pas trop te demander
Marsh Posté le 18-10-2004 à 14:29:27
scull a écrit : déjà aprés tes modifications c'est bien mieux, il y a moins de problèmes à la compilation.
|
tu as remplacé asm par __asm?
Marsh Posté le 18-10-2004 à 14:30:32
Oui, mais rien à faire sa compile pas
Marsh Posté le 18-10-2004 à 14:32:27
ah mais attends, tu fais du gcc, doncques en gcc si je ne m'abuse il faut utiliser l'odieuse syntaxe AT&T pour l'asm, plus tout un ot tas de bordel pas bo.
(sinon dsl je sais pu ou il faut regarder pour le // sous win, jamais utiliser ce truc..)
Marsh Posté le 18-10-2004 à 14:33:49
scull a écrit : Oui, mais rien à faire sa compile pas |
et sous visual studio?
Marsh Posté le 18-10-2004 à 14:36:17
non plus, c'est une trés vieille version de visual...
en fait, il comprend pas nos fonctions "ecrire"...
Marsh Posté le 18-10-2004 à 14:48:38
et si finallement j'utilise pas de asm ? comment je pourrais faire ? en C++ seul ?
Marsh Posté le 19-10-2004 à 17:56:06
bon ben scull, à mon avis on est dans la galere!!!, serait-il possible de nous en dire plus sur lapi pour progrommer notre port // merci
(¯`·.¸¸.->
Marsh Posté le 19-10-2004 à 19:09:06
msdn, search, parallel, write, 4ème réponse:
http://msdn.microsoft.com/library/ [...] 91.xml.asp
Marsh Posté le 21-10-2004 à 13:28:23
hum... et si on essaye de compiler tout sa sous nux sa pourrait marcher ?
Marsh Posté le 21-10-2004 à 13:29:05
scull a écrit : hum... et si on essaye de compiler tout sa sous nux sa pourrait marcher ? |
non.
[edit]
Jamais utilisé, mais ça fait partie du windows DDK d'après la doc, donc peu de chances...de tte manière l'accès aux périphs en général ne se fera pas de la même manière sur 2 OS différents.
Marsh Posté le 21-10-2004 à 13:34:34
le truc en fait, c'est que ce prog il a était fait l'année dernière par un pote. A la base c t pour marcher sur un win 95. Là on a tester de compiler sa source sur un visual basic sous win 95 et sur un devcpp sur winXP.
Sans avoir modifier le code source du programme, il me trouve plein de bug... Pourtant je sais que son appli marche, puisque j'ai un .exe qui marche...
Je pense que c impossible mais pourrait t'on retrouver le code source du .exe ?...
Marsh Posté le 21-10-2004 à 13:40:48
voila donc aprés quelques petites modifs sur le prog. Il reste plus qu'une seule erreur...
Citation : void ecrire(unsigned short adr,char out_char) |
Voilà on approche du but...
mais c'est toujours l'asm qui bug....
Marsh Posté le 21-10-2004 à 13:54:41
scull a écrit : voila donc aprés quelques petites modifs sur le prog. Il reste plus qu'une seule erreur...
Voilà on approche du but... |
l'instruction "out" envoie une donnée sur un port matériel, donc selon ton OS, elle ne sera pas acceptée (noyau NT)
=> écrire un driver ou passer par l'API
Marsh Posté le 21-10-2004 à 19:19:15
Outre ce qu'a dit Harkonnen, dans le cas où tu compilerais ton programme pour dos et que tu le lancerais sous dos (ou un émulateur), ton code asm est en syntaxe MASM (Microsoft), et en plus c'est de l'inline, donc c'est fait pour VC++. Pas du tout pour gcc. Et ton "unique" erreur est simplement que gcc ne considère pas le token "asm" de la même façon que VC++ (il attend '(' après et pas '{').
La syntaxe gcc (donc GAS: Gnu ASsembler) est complètement différente. Tu peux utiliser directement un registre ou laisser gcc optimiser l'utilisation et donc demander un type de registre uniquement. Exemple de truc possible dans ton cas, sans optimisation d'utilisation de registres (ça fait un millénaire que j'en ai plus fait, donc c'est pas du tout dit que ça compile):
Code :
|
Attention c'est dans l'autre sens les opérations (src -> dest). Quoique pour out je sois pas sûr.
Voir par exemple (au pif): http://www-106.ibm.com/developerwo [...] /l-ia.html
Tout est expliqué là-dessus. Y'a des tas de liens, tapes "gcc asm inline" dans google.
Marsh Posté le 22-10-2004 à 10:44:14
Merci bien G012 mais on a toujours ce probleme de "token" même avec ta commande
[cpp]
Compilateur: Default compiler
Building Makefile: "E:\LTELEC\PPCP\Tous les dossiers\liaison pc plan\Programme de test\Source\projet cpp\Makefile.win"
Exécution de make...
make.exe -f "E:\LTELEC\PPCP\Tous les dossiers\liaison pc plan\Programme de test\Source\projet cpp\Makefile.win" all
g++.exe -c "essaie compile ben/main5.cpp" -o "essaie compile ben/main5.o" -I"CDev-Cpp/include/c++/3.3.1" -I"CDev-Cpp/include/c++/3.3.1/mingw32" -I"CDev-Cpp/include/c++/3.3.1/backward" -I"CDev-Cpp/lib/gcc-lib/mingw32/3.3.1/include" -I"CDev-Cpp/include"
essaie compile ben/main5.cpp:9:12: missing terminating " character
essaie compile ben/main5.cpp: In function `void ecrire(short unsigned int,
char)':
essaie compile ben/main5.cpp:10: error: syntax error before `%' token
essaie compile ben/main5.cpp:11:3: missing terminating " character
make.exe: *** ["essaie] Error 1
Exécution terminée
Marsh Posté le 22-10-2004 à 12:21:36
Code :
|
On ne met pas le dernier : s'il est vide, et en C++, tout guillemet doit être fermé dans la même ligne.
En plus, avec g++ 3, il n'est plus authorisé de mettre les registres d'entrée ou de sortie parmi les clobber...
Marsh Posté le 22-10-2004 à 23:04:24
lol rafale30 >>> vive les vacances
pourtant je me rapel bien de ce g++.exe ...
Marsh Posté le 18-10-2004 à 14:03:06
Voila donc un petit programme pour faire allumer des dels à la sortie du port //. Pour cela on utilise du code asm.
On arrive pas a compiler ce programme avec devcpp et visual studio...
voici le programme :
et voici le log d'erreur...
Compilateur: Default compiler
Building Makefile: "E:\LTELEC\PPCP\Tous les dossiers\liaison pc plan\Programme de test\Source\projet cpp\Makefile.win"
Exécution de make...
make.exe -f "E:\LTELEC\PPCP\Tous les dossiers\liaison pc plan\Programme de test\Source\projet cpp\Makefile.win" all
g++.exe -c main3.cpp -o main3.o -I"CDev-Cpp/include/c++/3.3.1" -I"CDev-Cpp/include/c++/3.3.1/mingw32" -I"CDev-Cpp/include/c++/3.3.1/backward" -I"CDev-Cpp/lib/gcc-lib/mingw32/3.3.1/include" -I"CDev-Cpp/include"
In file included from CDev-Cpp/include/c++/3.3.1/backward/iostream.h:31,
from main3.cpp:1:
CDev-Cpp/include/c++/3.3.1/backward/backward_warning.h:32:2: warning: #warning This file includes at least one deprecated or antiquated header. Please consider using one of the 32 headers found in section 17.4.1.2 of the C++ standard. Examples include substituting the <X> header for the <X.h> header for C++ includes, or <sstream> instead of the deprecated header <strstream.h>. To disable this warning use -Wno-deprecated.
main3.cpp: In function `void ecrire(short unsigned int, char)':
main3.cpp:8: error: syntax error before `{' token
make.exe: *** [main3.o] Error 1
Exécution terminée
donc si vous savez d'ou sa vien merci de me le dire
---------------
Créer son forum gratuit | Mon beau blog phpBB caÿ le mal :o