CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Problème de compilation morpion

blachscholes56
blachscholes56
Niveau 5
03 mai 2018 à 11:52:03

Bonjour, je me met à la programmation et j'ai décidé de faire un morpion (pour m'entraîner) mais je n'arrive pas à compiler mon programme :snif2:

J'ai une erreur incompréhensible "C1002 espace du tas insuffisant pour le compilateur lors de la deuxième passe" (j'utilise visual studio 2015). J'ai beau chercher, je ne vois pas d'où ça vient dans mon code, peut être que je n'utilise pas la bonne méthode... C'est trop compliqué la programmation :snif2:

Voici mon code si vous voulez le voir: https://www.petit-fichier.fr/2018/05/03/morpion/

Merci de votre aide :snif2:

Sinon si vous avez d'autres idées de programmes de ce genre, je suis preneur :(

assis_toi
assis_toi
Niveau 9
03 mai 2018 à 11:55:24

sinon tu sais faire une recherche sur google ou pas?

blachscholes56
blachscholes56
Niveau 5
03 mai 2018 à 12:06:59

Ben, oui, ça dit que l'outil plante complètement, ce qui peut dire que ça ne vient pas de mon code, ou peut-être que si :-(

Message édité le 03 mai 2018 à 12:08:45 par blachscholes56
AtmelAVR
AtmelAVR
Niveau 4
03 mai 2018 à 13:41:24

Ahahah pas mal :rire:

blachscholes56
blachscholes56
Niveau 5
03 mai 2018 à 20:56:56

Bon, en fait, je n'arrive vraiment pas à le compiler et c'est un peu ennuyeux. La seule méthode que j'ai eu pour tester le code, c'était en utilisant TCC sous linux, à priori ça marche mieux que les autres et surtout il prend beaucoup moins de mémoire. J'ai 16 Go et c'est insuffisant pour GCC, je dois dire que je sèche. Le programme fonctionne mais c'est moins clean que ce que je voudrais.

Et sinon, si vous avez d'autres idées de programmes simples comme ça à faire de cette manière, ça peut être intéressant d'en discuter, j'ai déja fait un programme pour déterminer la parité d'un nombre (Je vous laisse deviner comment) et j'envisage d'en faire un pour déterminer les nombres premiers jusqu'a 2^32-1.

blachscholes56
blachscholes56
Niveau 5
03 mai 2018 à 20:59:47

Pour ceux qui ne veulent pas regarder le fichier, sinon, c'est le code en C d'un morpion "déroulé", constitué uniquement de switch imbriqués (pas de boucles, pas de fonctions, pas de goto). A peine 4.2 million de lignes de code, et il marche, on peut y jouer (quand il compile) :hap:

Message édité le 03 mai 2018 à 21:00:40 par blachscholes56
godrik
godrik
Niveau 30
03 mai 2018 à 21:14:56

ouch! Cte code! ahah!
J'ai essayer de compiler avec gcc sur ma machine, mais conio et windows.h ne sont pas disponible sur mon systeme...

blachscholes56
blachscholes56
Niveau 5
03 mai 2018 à 21:24:25

Voici une version pour GCC :-)
https://www.petit-fichier.fr/2018/05/03/morpionmonolithlinux/

Il faut jouer avec le pavé numérique et valider avec entrer à chaque coup, je n'ai pas trouvé d'équivalent multiplateforme à _getch() sur GCC.

godrik
godrik
Niveau 30
03 mai 2018 à 21:27:00
$ gcc MorpionMonolithLinux.c 
gcc: internal compiler error: Killed (program cc1)
Please submit a full bug report,
with preprocessed source if appropriate.
See <file:///usr/share/doc/gcc-4.9/README.Bugs> for instructions.
erik@RegWood02-89:/tmp/fooll$ 

Hulk sad...

blachscholes56
blachscholes56
Niveau 5
03 mai 2018 à 21:32:01

Il lui faut une quantité astronomique de RAM, on dirait. Ici ça monte et finit par planter, problème d'allocation. Je ne sais absolument pas combien il faut et difficile de trouver des machines à disposition avec plus de 16 Go. J'aimerais vraiment voir le code assembleur d'un programme comme ça en tout cas.

Quand à visual studio, les outils sont en 32 bits donc c'est mort d'avance.

Message édité le 03 mai 2018 à 21:32:47 par blachscholes56
godrik
godrik
Niveau 30
04 mai 2018 à 00:07:13

J'ai access avec des machines avec plein de ram, je peux essayer.
Tu veux quoi comme parametre de gcc ? Tu veux un binaire, tu veux l'assembleur? tu veux -O3?

dark_drow
dark_drow
Niveau 15
04 mai 2018 à 09:47:42

c'est la que AWS devient pratique :p

blachscholes56
blachscholes56
Niveau 5
04 mai 2018 à 16:30:21

Le 04 mai 2018 à 00:07:13 godrik a écrit :
J'ai access avec des machines avec plein de ram, je peux essayer.
Tu veux quoi comme parametre de gcc ? Tu veux un binaire, tu veux l'assembleur? tu veux -O3?

Ce serait vraiment fabuleux si tu pouvais le faire, merci beaucoup. Je suis curieux de savoir combien de ram il aura fallu pour compiler et quelle est la taille de l’exécutable en sortie, peut être avec et sans "-s". Je ne sais pas si une optimisation -O3 serait pertinente vu que je n'ai aucune boucle ni fonction, ce programme est juste un amoncellement géant de cas particuliers..

godrik
godrik
Niveau 30
04 mai 2018 à 17:59:07

Sur une machine avec 128GB de ram, ca passe. Je genere les differentes version. Sans option le binaire fait 24MB.
Tu veux que je te refile les binaires?
Ca a pris 2 minutes 10 secondes a compiler.

Message édité le 04 mai 2018 à 18:00:07 par godrik
blachscholes56
blachscholes56
Niveau 5
05 mai 2018 à 13:46:00

Ah, merci beaucoup de l'avoir fait! J'espère que ça n'a pas occupé les 128 GB de ram pour compiler.. 24 Mo c'est gigantesque pour un exécutable à base de printf uniquements!

Je veux bien les binaires si t'as la possibilité de me les envoyer oui, je suis curieux de voir à quoi ressemble le code assembleur. je m'attend à quelque chose d'assez redondant..

Sinon, j'y pensais en marchant dehors ce matin mais on pourrait encore plus simplifier le code, en supprimant la variable intermédiaire des getchar() pour coller l'appel directement dans le switch(). On aurait finalement un morpion de plusieurs million de lignes de code, sans boucle, sans variables, sans récursivité, sans fonctions et sans goto et qui nécessite un supercalculateur pour être compilé, on gagne vraiment des points, là.

Message édité le 05 mai 2018 à 13:47:18 par blachscholes56
_kilian_
_kilian_
Niveau 12
05 mai 2018 à 18:32:16

Laisse moi deviner, le but de l'exercice était de trouver la plus mauvaise façon de programmer un morpion?
4 millions de lignes pour un morpion qui se joue à deux c'est juste impossible, pour information c'est à peu près deux fois plus que le CryEngine.

blachscholes56
blachscholes56
Niveau 5
05 mai 2018 à 23:57:47

Oui, totalement. En fait j'avais déja entendu parler de cette idée il y a quelque années et un jour, j'ai décidé de voir ce que ça donnerait concrètement, c'est pour ça que les mesures m'intéressent.

Reprendre le morpion en particulier est une bonne idée car c'est réalisable en une soirée, ça peut représenter un défi sympa pour des étudiants en programmation et le résultat final parle à tout le monde. Au passage, le premier code source que j'avais sorti faisait 200 Mo mais j'ai contracté le code comme j'ai pu par la suite pour tomber sous 100 Mo. En retirant la variable intermédiaire, il n'y aura plus que le strict minimum pour faire fonctionner le jeu. A noter que l'intégralité du code est utile, il n'y a vraiment rien de superflu qui ferait paniquer le compilateur gratuitement, ça n'aurait aucun intérêt.

Message édité le 06 mai 2018 à 00:02:33 par blachscholes56
godrik
godrik
Niveau 30
06 mai 2018 à 21:20:31

Voila les deux URLs des binaires. Note que je ne prends aucune responsabilite pour ce que ces binaires font :)

J'ai pas reussit a compiler la version -O3: oom. J'imagine que le code est trop grand pour l'optimiseur.

https://webpages.uncc.edu/~esaule/morpion/morpion

https://webpages.uncc.edu/~esaule/morpion/morpion-s

blachscholes56
blachscholes56
Niveau 5
09 mai 2018 à 00:15:58

Merci, je les décompilerai à l'occasion pour voir ce que ça donne. J'ai essayé la compilation à nouveau ici et j'ai l'impression que ça peut passer avec 16 Go de ram, mais genre ce serait tout juste, je rééssaierai. Pour les optimisations, par contre, c'est horriblement long et ça plante aussi, j'imagine que si t'as un OOM avec 128 Go de ram ça vaut pas la peine que je rééssaye de mon côté :snif:

Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Internet
  • Macintosh
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment