Le mystère de GNU yes
|
05-07-2012, 19h31
(Modification du message : 05-07-2012, 19h36 par spin.)
Message : #3
|
|
spin
Contributeur Messages : 325 Sujets : 15 Points: 38 Inscription : Nov 2011 |
RE: Le mystère de GNU yes
galex-713 m'avait suggéré cette idée de ne mettre dans la boucle que le int, mais le problème c'est que l'exécution de int $80 modifie l'état des registres, il faut donc le remettre bien à chaque fois.
En ce qui concerne les buffers, j'ai essayé une solution en utilisant comme pointeur sur ma chaîne une donnée dans .data plutôt que directement la stack. Le résultat est le même, mon yes est infiniment plus lent que GNU yes. Cela dit, je n'ai pas compris grand chose au code de GNU (le C et moi...), mais après relecture plus attentive, je pense qu'il y a en effet une approche avec un buffer, comme tu le dis. À la ligne 84, on affiche argv[ i] et on pourrait supposer qu'il y a donc en effet un buffer contenant les 'y'. Mais je ne comprends pas comment le buffer peut être infini alors. EDIT : Après un coup de strace yes, je m'aperçois que GNU yes aussi affiche deux octets par deux octets ("y\n") en boucle : Code : write(1, "y\n", 2y L'output de mon yes, strace ./yes, est exactement le même (mise à part les trucs du début que je n'ai pas). |
|
« Sujet précédent | Sujet suivant »
|
Messages dans ce sujet |
Le mystère de GNU yes - par spin - 05-07-2012, 14h32
RE: Le mystère de GNU yes - par Ark - 05-07-2012, 16h52
RE: Le mystère de GNU yes - par spin - 05-07-2012, 19h31
RE: Le mystère de GNU yes - par Ark - 06-07-2012, 10h56
RE: Le mystère de GNU yes - par gruik - 24-11-2012, 18h42
RE: Le mystère de GNU yes - par spin - 25-11-2012, 15h33
RE: Le mystère de GNU yes - par spin - 26-11-2012, 20h07
RE: Le mystère de GNU yes - par gruik - 26-11-2012, 20h34
|
Utilisateur(s) parcourant ce sujet : 1 visiteur(s)