#676 Le 02/01/2011, à 00:53
- Pylades
Re : /* Topic des codeurs couche-tard [3] */
Il me semble que "i" est plus grand que "brackets".
D'ailleurs valgrind me sort :
==1939== Invalid read of size 4 ==1939== at 0x804897C: main (bf.c:118) ==1939== Address 0x4190fb4 is not stack'd, malloc'd or (recently) free'd
La ligne 118 est
i = closing[i]
Ah, mais, oui, bien sûr ! Ce que je peux être tête en l'air, parfois…
Cependant je pense qu'il peut y avoir autre chose, mais ça serait déjà bien d'éliminer ça…
Merci beaucoup !
Je suis en 32 bits :
$ uname -m i686
Mauvaise hypothèse, alors (ou alors le code 32 et 64 bits ont des portions identiques au même endroit, ce qui est également possible)…
Édit : en patchant mon code pour résoudre ce problème (malheureusement en sacrifiant beaucoup de mémoire), le comportement est à nouveau celui attendu. Cool.
Cependant, Valgrind me rapporte plus de 2 000 erreurs (dans quatre contextes), il y a encore des choses à vérifier…
Dernière modification par Pylade (Le 02/01/2011, à 01:06)
“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
Linus Torvalds – 12 janvier 2003
Hors ligne
#677 Le 02/01/2011, à 01:07
- grim7reaper
Re : /* Topic des codeurs couche-tard [3] */
glob, retard rattrapé.
Chui mort donc BN World !
Dernière modification par grim7reaper (Le 02/01/2011, à 01:07)
Hors ligne
#678 Le 02/01/2011, à 01:12
- Pylades
Re : /* Topic des codeurs couche-tard [3] */
'lut !
T'as lu mon édit ?
Sinon, BN pour moi aussi.
“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
Linus Torvalds – 12 janvier 2003
Hors ligne
#679 Le 02/01/2011, à 01:16
- compte supprimé
Re : /* Topic des codeurs couche-tard [3] */
Bn;
#680 Le 02/01/2011, à 02:07
- Pylades
Re : /* Topic des codeurs couche-tard [3] */
Bon, il est maintenant parfaitement en ordre. Étonnamment, il n'est plus rapide que d'assez peu, même s'il consomme bien plus de mémoire.
Flemme de le comparer à celui de Grim, je vous donne un lien demain.
“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
Linus Torvalds – 12 janvier 2003
Hors ligne
#681 Le 02/01/2011, à 02:27
- gnuuat
Re : /* Topic des codeurs couche-tard [3] */
NAN !
Mais pourquoi ? Pourquoi faire si compliqué ? Pourquoi ces espaces ?(Et en plus, c'est absolument terrible, car tu ne gères pas les erreurs et tu ne retournes rien, donc c'est proprement scandaleux.)
Les espaces, c'est pour l'indentation, cochon !
#include <cstdlib>
#include <unistd.h>
void putChar(char c)
{
unsigned int writed;
writed = write(STDOUT_FILENO, &c, sizeof(c));
if (writed != sizeof(c))
throw ("Failed to write a character!");
}
Et puis je trouve pas ça si compliqué .
Bisouland : embrassez les tous !
Volez les points d'amour de vos adversaires en les embrassant, dans ce jeu gratuit par navigateur !
Hors ligne
#682 Le 02/01/2011, à 03:14
- samυncle
Re : /* Topic des codeurs couche-tard [3] */
Hello world
Hors ligne
#683 Le 02/01/2011, à 03:17
- \\Ouranos//
Re : /* Topic des codeurs couche-tard [3] */
Ubuntu facile, c'est :
- Dire "Bonjour"
- Lire la doc et les règles du forum avant de poster. Savoir poser une question intelligemment.
- Mettre des balises url autour des liens et un tiret à su.
Hors ligne
#684 Le 02/01/2011, à 04:02
- Кຼزດ
Re : /* Topic des codeurs couche-tard [3] */
dou
Hors ligne
#685 Le 02/01/2011, à 04:45
- nesthib
Re : /* Topic des codeurs couche-tard [3] */
plop
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne
#686 Le 02/01/2011, à 08:42
- Compteur du TdCCT
Re : /* Topic des codeurs couche-tard [3] */
Scores totaux, depuis le début :
1) 2211 nesthib
2) 2071 samuncle
3) 1777 Pylade
4) 1425 Кຼزດ
5) 1053+5 grim7reaper /* ./viewtopic.php?pid=3486252#p3486252 */
6) 1048 cm-t
7) 774 \\Ouranos//
8) 743 helly
9) 732 Р☢w ! ✰ :mad: ✰ (эй !)
10) 537 gnuuat
11) 522 Lagierl
12) 350 tshirtman
13) 196 Askelon
14) 185 Kanor
15) 172 nathéo
16) 121 ǤƦƯƝƬ
17) 93 petifrancais
17) 93 The Uploader
19) 81 Rolinh
20) 78 edge_one
20) 78 pierguiard
22) 70 gulp
23) 59 kamui57
24) 37 ilagas
25) 32 Le Rouge
26) 30 keny
27) 25 GentooUser
27) 25 Morgiver
29) 24 ไ୦บเઢ'
29) 24 Steap
31) 22 xapantu
32) 20 CROWD
32) 20 d10g3n
34) 18 Ph3nix_
35) 15 timsy
36) 14 kouskous
37) 12 stratoboy
37) 12 sailing
37) 12 sakul
40) 11 alexises
40) 11 Crocoii
42) 10 Toineo
42) 10 NutMotion
42) 10 pseudovingtcinqcaracteres
42) 10 pfriedZ
46) 8 Mornagest
47) 7 Vista
48) 6 Zeibux
48) 6 ubuntlin
48) 6 asma.geek
51) 5 tendances-tdct
51) 5 kinouchou
53) 4 danychou56
53) 4 Neros
53) 4 Biaise
53) 4 totoflute
53) 4 pinballyoda ㋛
58) 3 Revan26914
59) 2 SoJaS
59) 2 ceric
61) 1 geenux
Codez-vous trop tard le soir ?
Demandez au Compteur du TdCCT pour le savoir !
J’ai été généreusement codé par tshirtman ; d’ailleurs, voici mon code source. TdCCT CEP : ./viewtopic.php?pid=3493579#p3493579 (p3492608).
Hors ligne
#687 Le 02/01/2011, à 08:42
- Compteur du TdCCT
Re : /* Topic des codeurs couche-tard [3] */
Scores de la période en cours :
1) 10 nesthib
1) 10 Кຼزດ
3) 6 samuncle
3) 6 \\Ouranos//
5) 5 gnuuat
5) 5 Pylade
7) 4 Lagierl
7) 4 grim7reaper
9) 3 Steap
10) 2 helly
10) 2 tshirtman
Codez-vous trop tard le soir ?
Demandez au Compteur du TdCCT pour le savoir !
J’ai été généreusement codé par tshirtman ; d’ailleurs, voici mon code source. TdCCT CEP : ./viewtopic.php?pid=3493579#p3493579 (p3492608).
Hors ligne
#688 Le 02/01/2011, à 11:18
- Pylades
Re : /* Topic des codeurs couche-tard [3] */
Pylade a écrit :NAN !
Mais pourquoi ? Pourquoi faire si compliqué ? Pourquoi ces espaces ?(Et en plus, c'est absolument terrible, car tu ne gères pas les erreurs et tu ne retournes rien, donc c'est proprement scandaleux.)
Les espaces, c'est pour l'indentation, cochon !
#include <cstdlib> #include <unistd.h> void putChar(char c) { unsigned int writed; writed = write(STDOUT_FILENO, &c, sizeof(c)); if (writed != sizeof(c)) throw ("Failed to write a character!"); }
Et puis je trouve pas ça si compliqué
.
Ouais, c'est déjà mieux. Mais bon, toujours est-il que sizeof(c), ça se remplace par 1U, quand on sait ce qu'on fait.
Ah, et comme promis, voici le lien vers ma nouvelle version qui n'apporte pas tant de perfs que ça…
Dernière modification par Pylade (Le 02/01/2011, à 11:21)
“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
Linus Torvalds – 12 janvier 2003
Hors ligne
#689 Le 02/01/2011, à 13:31
- Steap
Re : /* Topic des codeurs couche-tard [3] */
@Pylade :
gcc -O3 -std=c89 -pedantic -Wall -Wextra -Winit-self -Wfloat-equal -Wstrict-prototypes -Wold-style-definition -Wredundant-decls -Wwrite-strings -Wcast-qual -Wconversion -Wunreachable-code -Wformat=2 bf.c -c -o bf.o
bf.c: In function 'main':
bf.c:69: warning: passing argument 2 of 'move_pointer' with different width due to prototype
bf.c:77: warning: passing argument 2 of 'move_pointer' with different width due to prototype
bf.c:202: warning: will never be executed
bf.c:204: warning: will never be executed
bf.c:196: warning: will never be executed
bf.c:198: warning: will never be executed
gcc -s bf.o -o bf
GNU Guix, un gestionnaire de paquets fonctionnel.
Hors ligne
#690 Le 02/01/2011, à 13:37
- Pylades
Re : /* Topic des codeurs couche-tard [3] */
Pour les deux premiers warning, bizarre, chez moi je ne les ai pas. J'ai rajouté un cast, peut-être que c'était ça qui ne lui plaisait pas.
Pour les quatre autres, c'est normal, c'est dû à l'optimisation -O3, très agressive, qui peut provoquer des faux positifs.
“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
Linus Torvalds – 12 janvier 2003
Hors ligne
#691 Le 02/01/2011, à 16:50
- Elzen
Re : /* Topic des codeurs couche-tard [3] */
Même pas drôle, personne n'a relevé, j'ai pas pu faire ma blague.
Ouais, c'est déjà mieux. Mais bon, toujours est-il que sizeof(c), ça se remplace par 1U, quand on sait ce qu'on fait.
Et pour le cas où on voudrait enregistrer sous une machine bizarre pour qui un char serait d'une taille différente ?
Genre je sais pas, moi : si jamais quelqu'un essayait de faire un compilo qui reconnaisse les caractères unicodes comme des caractères et pas des suites de caractères… ça n'existe pas, mais ça pourrait très bien
Elzen : polisson, polémiste, polymathe ! (ex-ArkSeth)
Un script pour améliorer quelques trucs du forum.
La joie de t'avoir connu surpasse la peine de t'avoir perdu…
timezone[blocklist]
Hors ligne
#692 Le 02/01/2011, à 17:03
- grim7reaper
Re : /* Topic des codeurs couche-tard [3] */
Ça existe (je crois que sur certaines archi, peut-être une famille de DSP, le char fait 24 bits), mais ça ne change rien car le standard définit le type char comme faisant un byte (la taille du byte pouvant varier selon l'archi, mais en général c'est un octet) et sizeof(char) doit toujours renvoyer 1.
6.5.3.4 The sizeof operator
[…]
3 When applied to an operand that has type char, unsigned char, or signed char,
(or a qualified version thereof) the result is 1.
[…]
Dernière modification par grim7reaper (Le 02/01/2011, à 17:05)
Hors ligne
#693 Le 02/01/2011, à 17:22
- Steap
Re : /* Topic des codeurs couche-tard [3] */
Et du coup, pourquoi on écrirait pas "sizeof(char)", ce qui serait tout à fait équivalent à "1", "1U", "4/4" mais aurait l'avantage d'être bien clair ?
GNU Guix, un gestionnaire de paquets fonctionnel.
Hors ligne
#694 Le 02/01/2011, à 18:03
- helly
Re : /* Topic des codeurs couche-tard [3] */
la taille du byte pouvant varier selon l'archi
Heiiiin ? 8 bits = 1 byte, c'est pas une norme ?
Archlinux-wmii-dwb.
Un problème résolu ? Faites le savoir en mettant [résolu] à côté du titre de votre topic.
Un problème non résolu ? Faites le savoir en insultant ceux qui cherchent à vous aider.
Un site bleu super remasterised©, un wiki cherchant des volontaires pour traduire un site.
Hors ligne
#695 Le 02/01/2011, à 18:23
- nany
Re : /* Topic des codeurs couche-tard [3] */
En ligne
#696 Le 02/01/2011, à 19:00
- grim7reaper
Re : /* Topic des codeurs couche-tard [3] */
@grim7reaper : enfin, on a le droit de considérer qu'un interpréteur n'a pas forcément à être très portable, sinon on serait limité…
« Portable » n'est pas le bon mot, ce n'est pas ce que j'ai voulu dire.
Je voulais dire que la majorité des programmes brainfuck se base sur des cases d'au moins 1 octet, c'est donc un standard de fait (de toute façon, il n'y a pas vraiment de standard officiel alors…).
Donc si tu fais un interpréteur brainfuck qui n'est pas compatible avec le « parc logiciel » brainfuck (en utilisant des cases d'un bit), on peut considérer qu'il est « faux ».
Ah, et comme promis, voici le lien vers ma nouvelle version qui n'apporte pas tant de perfs que ça…
Bah chez moi si, les perf sont meilleures que ton ancienne version et pas qu'un peu (grosso modo même niveau que le mien en C++).
Dernière modification par grim7reaper (Le 02/01/2011, à 19:03)
Hors ligne
#697 Le 02/01/2011, à 19:02
- Pylades
Re : /* Topic des codeurs couche-tard [3] */
Et du coup, pourquoi on écrirait pas "sizeof(char)", ce qui serait tout à fait équivalent à "1", "1U", "4/4" mais aurait l'avantage d'être bien clair ?
Ben, dans le contexte, un 1U me paraît tout aussi évocateur qu'un sizeof (char), mais c'est probablement parce que j'ai moi-même l'habitude de faire comme ça.
De toutes façons, tout cela n'est pas bien grave…
Pylade a écrit :@grim7reaper : enfin, on a le droit de considérer qu'un interpréteur n'a pas forcément à être très portable, sinon on serait limité…
« Portable » n'est pas le bon mot, ce n'est pas ce que j'ai voulu dire.
Je voulais dire que la majorité des programmes brainfuck se base sur des cases d'au moins 1 octet, c'est donc un standard de fait (de toute façon, il n'y a pas vraiment de standard officiel alors…).
Donc si tu fais un interpréteur brainfuck qui n'est pas compatible avec le « parc logiciel » brainfuck, on peut considérer qu'il est « faux ».
Hum, point de vue intéressant. Je ne dirais pas faux, puisque qu'il reste valable, mais plutôt inapproprié.
Pylade a écrit :Ah, et comme promis, voici le lien vers ma nouvelle version qui n'apporte pas tant de perfs que ça…
Bah chez moi si, les perf sont meilleures que ton ancienne version et pas qu'un peu (grosso modo même niveau que le mien en C++).
Cool, ça.
Et en plus mon tampon est toujours infini et je détecte maintenant les erreurs d'appariement avant l'exécution. /me est décidément très balèze.
Dernière modification par Pylade (Le 02/01/2011, à 19:07)
“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
Linus Torvalds – 12 janvier 2003
Hors ligne
#698 Le 02/01/2011, à 19:30
- grim7reaper
Re : /* Topic des codeurs couche-tard [3] */
grim7reaper a écrit :Pylade a écrit :@grim7reaper : enfin, on a le droit de considérer qu'un interpréteur n'a pas forcément à être très portable, sinon on serait limité…
« Portable » n'est pas le bon mot, ce n'est pas ce que j'ai voulu dire.
Je voulais dire que la majorité des programmes brainfuck se base sur des cases d'au moins 1 octet, c'est donc un standard de fait (de toute façon, il n'y a pas vraiment de standard officiel alors…).
Donc si tu fais un interpréteur brainfuck qui n'est pas compatible avec le « parc logiciel » brainfuck, on peut considérer qu'il est « faux ».Hum, point de vue intéressant. Je ne dirais pas faux, puisque qu'il reste valable, mais plutôt inapproprié.
Pourquoi inapproprié ?
Et en plus mon tampon est toujours infini
Il y a plus qu'a trouver un code qui en a l'utilité ^_^.
je détecte maintenant les erreurs d'appariement avant l'exécution.
Je crois qu'il n'y a que ta version qui ne le faisait pas encore
Hors ligne
#699 Le 02/01/2011, à 19:39
- Pylades
Re : /* Topic des codeurs couche-tard [3] */
Pourquoi inapproprié ?
Car ça serait un interpréteur incompatible avec les programmes qu'il est censé interpréter… ^^
Pylade a écrit :Et en plus mon tampon est toujours infini
Il y a plus qu'a trouver un code qui en a l'utilité ^_^.
C'est pour le principe.
Pylade a écrit :je détecte maintenant les erreurs d'appariement avant l'exécution.
Je crois qu'il n'y a que ta version qui ne le faisait pas encore
Ouais, mais maintenant elle a presque toutes les qualités.
D'ailleurs je rappelle qu'elle peut lire un code depuis une indirection.
Tu peux maintenant ajouter un lien sur ton site vers cette belle version.
“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
Linus Torvalds – 12 janvier 2003
Hors ligne
#700 Le 02/01/2011, à 19:45
- grim7reaper
Re : /* Topic des codeurs couche-tard [3] */
grim7reaper a écrit :Pourquoi inapproprié ?
Car ça serait un interpréteur incompatible avec les programmes qu'il est censé interpréter… ^^
Oui, mais en quoi mon point de vue est inapproprié ?
Si tu veux écrire un interpréteur, en l'absence de standard reconnu, il faut bien que tu l'écrives pour qu'il soit compatible avec la majorité des programmes existant, non ?
Tu peux maintenant ajouter un lien sur ton site vers cette belle version.
Done.
Hors ligne