Page 1 sur 3

PB 6

Publié : mer. 23/juin/2021 18:09
par Guillot
salut les codeurs,

j'ai installée la v6 hier pour la testé
eh ben j'suis pas déçu !!
en compilation c + optimisation, j'ai invariablement x3
(je parle du langage hors instruction)
ça concerne le traitement d'image, les demos old school, ...

je devrai etre content, ben non !
maintenant je me dis que c'est trop con de devoir garder l'ancien backend pour les codes ASM
on pourrai moderniser d'un coup PB en integrant les avantage du c (fonctions retournant structure ou tableau, operateurs vectoriel etc)
(jespere que fred trouvera une solution pour integrer les code ASM au backend C)

Re: PB 6

Publié : jeu. 24/juin/2021 7:23
par Micoute
Parfois, il faut se contenter de ce qu'on a, mais ça n'empêche pas de rechercher des solutions.

Re: PB 6

Publié : jeu. 24/juin/2021 10:05
par Guillot
bien d'accord, faut apprendre a se demerder avec ce qu'on a
y' toujours moyen
mais ça nous simplifierai bien la tache si il se modernisai un peu
faut avouer que pb est tres archaïque au niveau du langage de base (mais puissant !)

Re: PB 6

Publié : jeu. 24/juin/2021 15:08
par Micoute
Oui, je trouve ça merveilleux que ce logiciel de développement soit aussi facile à utiliser et puisse compiler dans divers autres langages de programmation tels que le C ou l'assembleur, espérons qu'un jour on puisse mélanger les deux.

Re: PB 6

Publié : sam. 03/juil./2021 16:10
par blendman
coucou

X3, tu veux parler de la vitesse ?

Moi, j'ai testé mon logiciel de 2D animatoon,
[edit]
et après avoir testé pas mal, j'ai l'impression que ça va au moins 2 fois plus vite ! (en tout, j'ai vraiment cette impression sur ce logiciel, ce qui est quand même assez énorme).

Re: PB 6

Publié : dim. 04/juil./2021 21:21
par Ollivier
Guillot a écrit :(jespere que fred trouvera une solution pour integrer les code ASM au backend C)
Salut Guillot,

le C intègre déjà l'ASM. Il est juste un peu plus chiant à coder, quoique...

En fait, Fred assure le fonctionnement long terme au cas où l'ASM X86/X64 disparaisse. Et puis parce que le compilateur ASM actuel ne s'est pas adapté aux nouvelles fonctions.

Ton programme en C peut fonctionner sur ARM théoriquement.

Et pour l'ASM, tu as une directive C qui te permet d'en intégrer.
Mais surtout tu as l'ensemble des instructions ASM standard Intel/AMD disponibles en C, sans (pour Kcc) avoir besoin de connaître la moindre facette de coucougnette en ASM. Ce sont des directives propres à chaque instruction. Je suppose que les concepteurs du C ont fait ça pour que le programme fonctionne qu'il soit sur Intel/Amd ou bien sur Arm.

Pour schématiser succintement, en pureBasic, on pourrait avoir ça :

Code : Tout sélectionner

Macro XegalY(x, y)
CompilerIf #X64
! mov rax, [v_x]
! mov [v_y], rax
CompilerElse
XegalY_Arm(x, y)
CompilerEndIf
EndMacro
Et en C, il y a déjà tout ça.

Re: PB 6

Publié : lun. 05/juil./2021 12:38
par Guillot
à blendman
ouai 3 fois plus rapide
j'ai fais quelque tests sur des routines n'utilisant pas d'instructions (uniquement oprérateur/ affectation / condition)
le genre de truc en traitement d'image

à Ollivier :
je dis pas qu'on ne peut pas programmer en ASM avec le backend C
mais si les codes ASM sont incompatibles, PB devra garder l'ancien backend
donc, aux oubliettes les améliorations qu'il aurait été facile d'apporter à PB si on avais pu se limiter à une traduction en c

Re: PB 6

Publié : lun. 05/juil./2021 19:07
par Kwai chang caine
Ollivier a écrit :Mais surtout tu as l'ensemble des instructions ASM standard Intel/AMD disponibles en C
Je sent vraiment que les portes du paradis vont pouvoir s'ouvrir devant nous avec le nouveau Backend, déjà qu'avec PB on en découvre toujours, mais là, je pense que même le meilleur de tous les forums PB, ne pourra jamais aller au bout des possibilités de PB 8O

Re: PB 6

Publié : lun. 05/juil./2021 19:14
par Ollivier
Guillot a écrit :donc, aux oubliettes les améliorations qu'il aurait été facile d'apporter à PB si on avais pu se limiter à une traduction en c
Ben des oubliettes comme ça mon pote, ça s'oublie pas !

Re: PB 6

Publié : mar. 06/juil./2021 17:04
par Guillot
à Ollivier:
t'aurai pas aimé avoir :
- les procedures retournant structure ou tableau
- les operateurs vectoriels
- les tableaux en littéral ( dim t(3)=[ 0, 1, 2, 3] )
etc
il y aurai eu quantité d'amélioration à apporter à PB pour pas un rond

toi qui connais l'ASM, tu pense qu'il y aurai moyen techniquement de faire fonctionner du code ASM ancienne version en c
en sauvegardant / restituant les registres en entrée / sortie de code ?
(dans l'absolue, pas en l'état de la v6 bien entendu)

Re: PB 6

Publié : mar. 06/juil./2021 17:44
par G-Rom
Salut guillot , gcc supporte l'asm inline , quand on pourra faire du c inline, l'asm sera aussi à portée , un peu différent de fasm , mais fondamentalement
les instructions resteront les mêmes.

Code : Tout sélectionner

asm("code assembleur");

Re: PB 6

Publié : mar. 06/juil./2021 18:59
par Ollivier
Source

Code : Tout sélectionner

; printf under PB_C
CompilerIf #PB_Compiler_ExecutableFormat<>#PB_Compiler_Console 
  CompilerError "Exec-Format must be Console in Compiler-Option"
CompilerEndIf  
Define *string=UTF8("Hello visible universe. ")
Define *string2=UTF8("Value is now: %lld ")
Define *string3=UTF8("CPU-Time: %lld ")
Define value.q=42 
OpenConsole()
! printf(p_string); 
! printf(p_string2,++v_value);
! long long myrdtsc(void) { asm volatile ("rdtsc\n\t" "shl $32,%rdx\n\t" "or %rdx ,%rax"); }
! printf(p_string3,myrdtsc()); 
Input()
CloseConsole()
FreeMemory(*string) 
FreeMemory(*string2)
FreeMemory(*string3)
; Hello visible universe. Value is now: 43 CPU-Time: 3181639470065

Re: PB 6

Publié : mar. 06/juil./2021 19:18
par G-Rom
Faut que je teste alors la nouvelle version, merci oliv !

Re: PB 6

Publié : mer. 07/juil./2021 20:41
par Ollivier
Yes, tous les remerciements peuvent aller à Juergenkulow.

Et le EnableC/DisableC est sûrement dans les étrennes : de toute façon, c'est, quelquepart l'IDE, le plus contraignant, car le compilateur permet d'inclure n'importe quoi en ligne complète dans une zone balisée CompilerIf 0 puis de lire cette zone en pre-process. Juste l'IDE qui fait des indentations et des surbrillances faites pour pureBasic.

Re: PB 6

Publié : jeu. 08/juil./2021 20:42
par G-Rom
bon, aucun code en C ne marche avec le compilo pbcompilerc. ( conflit avec des compilo déjà installé ) ? :/