Soyez le premier à donner votre avis sur cette source.
Snippet vu 3 525 fois - Téléchargée 38 fois
int a; char*string; void affiche(char*string) { for(a=0; string[a]; a++) { asm("movl $string, %eax"); asm("movl a, %ebx"); asm("movb 0x0(%eax,%ebx,1), %al"); asm("movb $0x0e, %ah"); asm("int 0x10"); //Plantage } } int main() { affiche("String"); return 0; }
24 févr. 2003 à 00:04
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().
@+
9 oct. 2002 à 21:43
6 oct. 2002 à 19:13
merci
5 oct. 2002 à 10:13
4 oct. 2002 à 19:41
et c pas une fatal error mais un overflow ;)
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.