Questions Options du compilateur...

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
cage
Messages : 604
Inscription : ven. 16/oct./2015 18:22
Localisation : France
Contact :

Questions Options du compilateur...

Message par cage »

Bonsoir a tous les puristes,

Je comprends l'utilité de toutes les Options du compilateur, sauf une, 'Optimize generated code'
En passant, je remarque que cette option n'est pas traduite.

a) Quelle est l'utilité de cette option et doit-on la sélectionner dans tous les cas.

b) Si on inclut des fichiers *.pbi dans son code, quelle est l'importance a accorder aux options activées pour ces fichiers, car on peut agir sur les options du compilateur pour chaque fichier.

Merci pour votre éclairage,
cage
Image
■ Win10 Pro 64-bit (Intel Celeron CPU N2920 @ 1.86GHz, 4,0GB RAM, Intel HD Graphics) & PB 6.12 LTS
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
Marc56
Messages : 2197
Inscription : sam. 08/févr./2014 15:19

Re: Questions Options du compilateur...

Message par Marc56 »

Bonjour Cage,

a) Cette option ne concerne que le compilateur C (je crois)

b) On ne compile pas les .pbi individuellement, mais le contenu de ceux-ci est intégré ((X)include ... ) au moment de la compilation du .pb principal, donc les options de compilation de chaque .pbi sont ignorées. Seul les options du .pb principal (ou celui du projet) sont prise en compte. Les .pbi permettent juste de découper un source en morceau. Ne pas confondre avec les modules.

À vérifier.
:wink:
Avatar de l’utilisateur
cage
Messages : 604
Inscription : ven. 16/oct./2015 18:22
Localisation : France
Contact :

Re: Questions Options du compilateur...

Message par cage »

Bonjour,

Merci Marc56 pour tes explications.

PB est encore (et toujours) plein de secrets pour moi.

Mais je ne désespère pas.

cage
■ Win10 Pro 64-bit (Intel Celeron CPU N2920 @ 1.86GHz, 4,0GB RAM, Intel HD Graphics) & PB 6.12 LTS
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
Avatar de l’utilisateur
Mindphazer
Messages : 694
Inscription : mer. 24/août/2005 10:42

Re: Questions Options du compilateur...

Message par Mindphazer »

a) Oui c'est ça :
En 6.02, l'option a été traduite et complétée :
C'est désormais "Optimisation du code C"
Bureau : Win10 64bits
Maison : Macbook Pro M3 16" SSD 512 Go / Ram 24 Go - iPad Pro 32 Go (pour madame) - iPhone 15 Pro Max 256 Go
Avatar de l’utilisateur
cage
Messages : 604
Inscription : ven. 16/oct./2015 18:22
Localisation : France
Contact :

Re: Questions Options du compilateur...

Message par cage »

Merci pour l'information.

Donc, on peut laisser cette option décochée si on n'utilise pas le C dans son code.
■ Win10 Pro 64-bit (Intel Celeron CPU N2920 @ 1.86GHz, 4,0GB RAM, Intel HD Graphics) & PB 6.12 LTS
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: Questions Options du compilateur...

Message par Ollivier »

Si tu es en ASM, ça ne changera rien
Si tu es en C backend, ça utilise toutes les possibilités connues d'optimisation. Résultat : des performances en C qui nécessitent beaucoup de travail en ASM pour rivaliser. J'ai fait quelques tests et ça remplace les optimisations équivalentes en ASM. Pour une case à cocher, ça remplace beaucoup de temps de programmation d'optimisation.
Avatar de l’utilisateur
cage
Messages : 604
Inscription : ven. 16/oct./2015 18:22
Localisation : France
Contact :

Re: Questions Options du compilateur...

Message par cage »

Merci Ollivier,

Mais ta réponse entraine une autre question.

Pour ASM, c'est sur, je ne l'utilise pas.

Mais qu'appelles-tu C-backend ?

Pour l'instant, j'utilise PB en version 6.00 LTS. Suis-je concerné ?

Merci.
■ Win10 Pro 64-bit (Intel Celeron CPU N2920 @ 1.86GHz, 4,0GB RAM, Intel HD Graphics) & PB 6.12 LTS
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
Avatar de l’utilisateur
Mindphazer
Messages : 694
Inscription : mer. 24/août/2005 10:42

Re: Questions Options du compilateur...

Message par Mindphazer »

Par défaut, si tu n'as rien changé aux options du compilateur, tu compiles avec le compilateur ASM.
Pour ajouter le compilateur C (C-BackEnd), il faut que tu ailles dans les options du compilateur, que tu ajoutes un compilateur supplémentaire, en allant chercher pbcompilerc.exe (dans ton dossier \Purebasic\Compilers\)

De cette manière, tu pourras, pour chaque projet ou .pb, choisir quel compilateur utiliser. Au boulot par exemple, notre antivirus est un peu tâtillon, du coup pour certains programmes, je suis obligé d'utiliser le compilateur C
Bureau : Win10 64bits
Maison : Macbook Pro M3 16" SSD 512 Go / Ram 24 Go - iPad Pro 32 Go (pour madame) - iPhone 15 Pro Max 256 Go
Avatar de l’utilisateur
cage
Messages : 604
Inscription : ven. 16/oct./2015 18:22
Localisation : France
Contact :

Re: Questions Options du compilateur...

Message par cage »

Bonjour,

@Mindphazer:
Merci pour ta réponse, j'y vois un peu plus clair.

Si Utiliser Compilateur: PureBasic 6.00 LTS (Windows - x64), alors compilateur ASM

Si Utiliser Compilateur: PureBasic 6.00 LTS - C Backend (Windows - x64), alors compilateur C Backend

Compiler en C Backend est plus long qu'en ASM, mais l'exécutable est plus petit.

Je suppose que je dois pouvoir trouver quelques explications sur C Backend dans la version anglaise du forum.
Je vais creuser voir ce que je peux trouver, notamment sur la différence entre les 2 compilateurs, car il doit bien y en avoir une.
Merci encore,
cage
■ Win10 Pro 64-bit (Intel Celeron CPU N2920 @ 1.86GHz, 4,0GB RAM, Intel HD Graphics) & PB 6.12 LTS
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
Avatar de l’utilisateur
Mindphazer
Messages : 694
Inscription : mer. 24/août/2005 10:42

Re: Questions Options du compilateur...

Message par Mindphazer »

cage a écrit : lun. 07/août/2023 11:33 Je suppose que je dois pouvoir trouver quelques explications sur C Backend dans la version anglaise du forum.
Je vais creuser voir ce que je peux trouver, notamment sur la différence entre les 2 compilateurs, car il doit bien y en avoir une.
Merci encore,
cage
La différence c'est qu'avec le C-Backend, Purebasic génère un code C qui est ensuite compilé avec un compilateur C (gcc)
Du coup, un compilateur C étant très répandu, PB est désormais utilisable sur RaspBerry ou sur les Macs M1 (ou 2)

Un peu plus d'infos : https://www.purebasic.fr/blog/?p=480
Bureau : Win10 64bits
Maison : Macbook Pro M3 16" SSD 512 Go / Ram 24 Go - iPad Pro 32 Go (pour madame) - iPhone 15 Pro Max 256 Go
Marc56
Messages : 2197
Inscription : sam. 08/févr./2014 15:19

Re: Questions Options du compilateur...

Message par Marc56 »

On peut ajouter qu'à terme, cela permettra d'ajouter plus facilement des nouvelles librairies.
:wink:
Avatar de l’utilisateur
cage
Messages : 604
Inscription : ven. 16/oct./2015 18:22
Localisation : France
Contact :

Re: Questions Options du compilateur...

Message par cage »

@Mindphazer:
Encore merci pour ton explication, courte et concise comme je les aime.

Je comprends mieux les choses, mais je vois que j'ai encore du chemin a faire pour sortir de ma programmation de pépère.

J'ai ajouté l'adresse du blog dans mes favoris, ce qui me permettra de la lecture pour les longues soirées d'hiver.

cage
■ Win10 Pro 64-bit (Intel Celeron CPU N2920 @ 1.86GHz, 4,0GB RAM, Intel HD Graphics) & PB 6.12 LTS
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: Questions Options du compilateur...

Message par Ollivier »

À partir de la version 6, il y a du C backend. Et donc, je vais dire une probable bêtise, mais, à partir de la version 6, en C backend, l'optimization de code est incontournable.

C backend = compilation en C

Pour vérifier si tu es en C backend, tu tapes :

Code : Tout sélectionner

!nop
C'est une instruction ASM, et je ne crois pas qu'elle signifie quelquechose en C.

Donc si tu es en C backend, cette ligne de code va générer une erreur.
Tandis qu'en ASM backend, ça ne fera rien (No OPeration).

Le choix du compilateur est dans les options du compilateur. Et les 2 compilateurs sont dans un combo, donc il n'y a rien à taper, juste à cliquer pour basculer d'un compilateur à l'autre.

En C backend, l'assembleur x86/x64 est encore disponible mais est lourd en syntaxe. On doit l'invoquer en C sous une forme grosso modo comme ceci :

Code : Tout sélectionner

!asm{code ASM}
Tout ton ASM se trouve sur une seule ligne. Tu dois déclarer les entrées et les sorties de données entre C et ASM toujours sur la même ligne. C'est assez fastidieux mais possible.

L'avantage du C c'est que l'asm x86/x64 n'est plus obligatoire, et en tant que programme pureBasic, on n'a pas trop à se soucier. C'est le compilateur C qui va vérifier sur quelle machine il est et compiler en code machine (ASM) selon le CPU.

Traduction : pureBasic peut être compilé en ASM X86/X64 comme en ASM ARM.

L'option d'optimisation du code est valable pour tous les processeurs. Donc une optimisation va optimiser avec les instructions existantes sur la machine en question.

Autrement dit, certains codes vont être plus rapides pour certaines opérations sur une machine x86/x64 et sur d'autres opérations sur une machine ARM.

Le X86/x64 est plus rapide sur certaines opérations : calculs logiques, maths et transferts.

Mais l'ARM va être plus rapide avec le traitement des listes et des maps.

Toutes ces vitesses qui diffèrent sont gérées automatiquement par l'optimiseur.

Espérant ne pas trop dire de cabrioles...
Avatar de l’utilisateur
cage
Messages : 604
Inscription : ven. 16/oct./2015 18:22
Localisation : France
Contact :

Re: Questions Options du compilateur...

Message par cage »

Bonsoir a tous,

C'est la fin du weekend, alors j'ai un peu de temps pour répondre.

Merci Ollivier pour toutes ces précisions que tu viens de m'apporter.
Ça me permet d'approfondir mes connaissances de PB et surtout ça me permettra de mieux comprendre un certains nombre de posts où je me sentais un peu perdu, voire même complétement largué.
Je viens du Basica, GWBasic, QB, VB et maintenant PB que j'apprécie de plus en plus.
J'ai débuté sur Oric1, puis Oric Atmos (82/84), Toshiba T3200 (entreprise), Amstrad PC-1512,...
J'ai toujours programmé en Basic, et toujours ce que j'appelais de l'outillage (utilitaires pour le boulot pour se simplifier la vie et éviter les actions répétitives, toujours chiant quand il faut tous les jours entrer les mêmes commandes sur un clavier)
Aujourd'hui, je maintiens quelques applications pour des anciens collègues qui travaillent encore (je suis retraité) mais surtout des utilitaires personnels (vidéo, radio, musique, logiciels payants, ...)
J'aime bien me confronter a des choses que je ne sais pas faire a priori, juste pour essayer et surtout pour le fun.
Encore un grand merci, c'est vraiment très sympa quand quelqu'un prends de son temps pour donner des explications.
cage
■ Win10 Pro 64-bit (Intel Celeron CPU N2920 @ 1.86GHz, 4,0GB RAM, Intel HD Graphics) & PB 6.12 LTS
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: Questions Options du compilateur...

Message par Ollivier »

J'ai passé mes 1ères années de programmation sur GW-BASIC. Et là, on est loin avec PureBasic. Rien que les structures en terme de syntaxe, ça change la vie.

Après, sur le plan des limitations mémoire, GW-BASIC était "small" : 64Ko pour tout caser, le code, et les données du programme. Il fallait possiblement paginer (bsave/bload) avec des disquettes 360Ko. C'était très limité.

Mais c'est dans la limite que l'on développe le mieux. On commence par un petit processeur logiciel qui fonctionne à merveille, puis on fait la course à l'optimisation mémoire pour tirer le meilleur parti de ce processeur.

Les freins, à part la mémoire et le matériel graphique restreint : la vitesse, et la syntaxe.

Donc quel bonheur de découvrir Quick-Basic, son aide grandiose, et sa possibilité de compiler. Puis vient le "most" : Turbo-Basic. Ça, ça a été mon labo logiciel. J'ai exploré énormément avec ce compilateur. Je me suis fait ma propre fonte, j'ai mangé le langage machine, et le bouton RESET. J'ai réussi à basculer en mode protégé (sans retour en mode réel).

Je précise un peu cette étape assez incroyable : avec du 16 bits, réussir à exécuter une centaine d'exécutions 32 bits. Sans une documentation mirobolante, c'est un joli tour de passe-passe, surtout à partir du Basic. En fait, j'ai suivi un chemin :
- optimiser la mémoire;
- accéder à l'EMS/XMS (15 mégas disponibles au lieu de 400 kilo, ça motive à creuser !)
- créer un assembleur/désassembleur 16 bits
- fouiller les interruptions XMS
- découvrir que l'une d'entre elles bascule en mode protégé
- s'aider d'une Doc pour les GDT/LDT
- tenter de basculer un 80286
- échouer
- tenter de basculer un 80386
- réussir (afficher un pixel blanc avec du code machine 32 bits)
Tout ça avec un seul et unique fichier exécutable de 214 kilos, un compilateur nommé TB.EXE (Turbo-Basic de Borland).

J'ai fait aussi de la 3D. J'avais le droit à 100 pixels en rotation sur les 3 axes. J'ai fait le fonctionnement d'un moteur thermique en schéma éclaté (2D seulement). Ça commençait à aller vite (386 à 33MHz). L'utilité de mes programmes : apprendre plus facilement les règles et tables des matières scolaires. Et fabriquer des automates.

C'est assez incroyable, mais jamais je n'ai vu l'intérêt de stocker des données personnelles. Idem avec le cryptage : pas de besoin, par contre la compression de données (évidemment), si. J'avais pourtant quelques tutos sur les fichiers personnels, mais ça me semblait impensable, voire inintéressant.

Je trouvais plus fascinant de simuler des atomes, des molécules, des statistiques à n'en plus finir, des séquences de jeux aussi que de chercher à stocker des listes de personnes avec des critères x ou y.

C'est étrange d'avoir vu certains programmeurs s'élever millionaires ou milliardaires parce que leur passion c'est les autres...

Et puis pureBasic, ça a été une très belle école technique. En parallèle aux 24 bits couleurs, aux cartes graphiques 3D, apprendre à crypter, optimiser le temps d'exécution, et l'IA aussi.

Ça permet de ne pas lâcher l'évolution informatique. Aujourd'hui, Internet remplace l'absence de documentation de jadis.
Répondre