FONCTION D'AFFICHAGE DE CHAINE - ASM - BUG A L'EXECUTION

cs_GoldenEye Messages postés 527 Date d'inscription vendredi 14 septembre 2001 Statut Membre Dernière intervention 6 octobre 2008 - 1 oct. 2002 à 14:01
cs_chmod777 Messages postés 46 Date d'inscription jeudi 25 juillet 2002 Statut Membre Dernière intervention 2 décembre 2006 - 24 févr. 2003 à 00:04
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/10026-fonction-d-affichage-de-chaine-asm-bug-a-l-execution

cs_chmod777 Messages postés 46 Date d'inscription jeudi 25 juillet 2002 Statut Membre Dernière intervention 2 décembre 2006 1
24 févr. 2003 à 00:04
Réponse a KAID:
la tu te goure un peu quand même: insérer de l'ASm dans un code en C est très répandu: pourquoi ? en particulier pour les fonctions d'affichage.
les fonctions d'affichages en C (dont la plus connue printf() ) sont extrememnt lentes, le fait d'inclure de l'asm permet d'augmenter considérablement la vitesse d'affichage et , par la même la vitesse d'execution du programme (c'est pour cela que les moteurs 3d sont en partie codés en ASM)
juste pour te rendre compte, execute le code suivant:

#include <stdio.h>
int i;
void main()
{
for(i=0;i<1000000000;i++)
{
printf("%d
",i);
}
}


tu pourra attendre longtemps avant que le prog se termine!
alors que si tu vire l'affichage du nombre, l'execution durera 20 secs (sur 1,4 GHz).
d'ou l'avantage d'inclure de l'ASM dans du C.
cela s'appelle l'optimisation!
d'ou le probleme non résolu qui persiste.

P.S: la fonction write() est un peu plus rapide que printf().
@+
cs_Kaid Messages postés 949 Date d'inscription mardi 2 octobre 2001 Statut Membre Dernière intervention 8 juillet 2006 1
9 oct. 2002 à 21:43
madprog: Turbo C non ? Mais bon, le 16 bits et les interruptions DOS ne sont pas promis à un grand avenir :)
madprog Messages postés 16 Date d'inscription mardi 1 octobre 2002 Statut Membre Dernière intervention 7 août 2005
6 oct. 2002 à 19:13
Kaid: et tu connais un compilateur c/c++ en 16bits ?
merci
cs_Kaid Messages postés 949 Date d'inscription mardi 2 octobre 2001 Statut Membre Dernière intervention 8 juillet 2006 1
5 oct. 2002 à 10:13
En fait la vraie question qu'il faut se poser est "A quoi sert d'appeler des interruptions DOS 16 Bits dans un programme Win32 32 Bits ?" La réponse étant "A rien", pas la peine de s'étaler là-dessus.
madprog Messages postés 16 Date d'inscription mardi 1 octobre 2002 Statut Membre Dernière intervention 7 août 2005
4 oct. 2002 à 19:41
va savoir...
et c pas une fatal error mais un overflow ;)
cs_Thaeron Messages postés 202 Date d'inscription vendredi 6 juillet 2001 Statut Membre Dernière intervention 31 octobre 2007
4 oct. 2002 à 16:11
Quel est l'interet de pouvoir inserer de l'asm dans un code en C si a chaque int ça fait une fatale erreur ?? :o\
madprog Messages postés 16 Date d'inscription mardi 1 octobre 2002 Statut Membre Dernière intervention 7 août 2005
3 oct. 2002 à 09:21
mais ca plante aussi sous linux (segmentation fault) compilé avec g++.
Dev-C++ utilise ce compileur donc ca pourrait venir du compileur aussi.
Pourtant le programme désassemblé présente bien l'interruption et les mouvements voulus (mov).
Alors...
cs_BigNose Messages postés 1 Date d'inscription samedi 27 juillet 2002 Statut Membre Dernière intervention 2 octobre 2002
2 oct. 2002 à 22:26
Effectivement , G fait la meme experience cette ete avec Dev , et pareil G U le meme problem ...
Deja je pense que le problem , vient de l'OS , il me semble pas que windows autorise reellement un appel au interuption comme ca ce faisait sous DOS( je n'en suis pas certain du tout ) Mais qd on vois de l'ASM Win32 , ca fait appelle au API en pagaille donc C pour ca que j'en suis venu a penser ca.

Maintenant si quelqu'un a trouver une solution pour gerer du OLD-Style ASM avec DEV , j'aimerais connaitre la solution
madprog Messages postés 16 Date d'inscription mardi 1 octobre 2002 Statut Membre Dernière intervention 7 août 2005
2 oct. 2002 à 18:08
http://madprog.free.fr/fonction.exe : mon site est en changement ;)
++
madprog Messages postés 16 Date d'inscription mardi 1 octobre 2002 Statut Membre Dernière intervention 7 août 2005
2 oct. 2002 à 13:14
Mais cette fonction de toute maniere n'affiche pas une chaine, mais le caractère en %al... donc ya pas d'histoire de $ a la fin de la chaine Croqmort. Merci quand meme.
Thaeron: la fonction 0x0a de int 0x10 plante aussi. si tu veux une liste des fonctions asm va sur http://madprog.free.fr/ et telecharge le fichier fonction(.exe). c une archive SFX, pas de danger ;)
cs_Thaeron Messages postés 202 Date d'inscription vendredi 6 juillet 2001 Statut Membre Dernière intervention 31 octobre 2007
2 oct. 2002 à 12:50
Hum c bizarre, j'ai testé la fonction 0x09 de l'int 0x21 et ça plante aussi, deplus dev-c++ n'accepte pas le $string et le a dans le code asm, si qq'un a une idée
Croqmort Messages postés 95 Date d'inscription mercredi 5 décembre 2001 Statut Membre Dernière intervention 27 juin 2006
1 oct. 2002 à 23:53
il se peut que la chaine doivent se finir par $
je sais que une des fonctions d'affichage du bios edmande que les chaines se finnisent par $, c peut etre celle là.
cs_GoldenEye Messages postés 527 Date d'inscription vendredi 14 septembre 2001 Statut Membre Dernière intervention 6 octobre 2008 4
1 oct. 2002 à 18:31
Faute avouée à demi pardonnée... @+
madprog Messages postés 16 Date d'inscription mardi 1 octobre 2002 Statut Membre Dernière intervention 7 août 2005
1 oct. 2002 à 18:11
Desole mais je suis tout nouveau d'aujourd'hui...
++ sur le forum
cs_GoldenEye Messages postés 527 Date d'inscription vendredi 14 septembre 2001 Statut Membre Dernière intervention 6 octobre 2008 4
1 oct. 2002 à 15:19
Quant à la réponse à la question, tu ne l'auras pas de sitôt dans la mesure où tu n'as même pas pris la peine de rechercher dans le forum
cs_GoldenEye Messages postés 527 Date d'inscription vendredi 14 septembre 2001 Statut Membre Dernière intervention 6 octobre 2008 4
1 oct. 2002 à 14:01
Ici on donne des sources et les questions, on les pose dans le forum. Ce n'est pas la première fois qu'on le dit nom d'un chien
Rejoignez-nous