PureBasic

Forums PureBasic
Nous sommes le Sam 25/Mai/2013 4:48

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 27 messages ]  Aller à la page 1, 2  Suivante
Auteur Message
 Sujet du message: Des constantes pas forcément constantes !
MessagePosté: Sam 20/Nov/2010 19:17 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 29/Juin/2007 17:50
Messages: 1901
Bonjour,

Un truc qui déchirerait, ce serait des constantes numériques pas vraiment très constantes, mais constantes quand même.
Histoire d'avoir un superbe Setup interne à un fichier exécutable.

Point de vue programmeur, il y aurait une méta-instruction irréversible pour préciser que telle ou telle constante doit être préparée à être "bassement" modifiée.

Les inconvénients :
* la taille de l'exécutable qui doit contenir la cartographie des diverses constantes pas très constantes;
* la lenteur d'exécution de l'opération d'écriture de la valeur;
* un sac de 50Kg de Doliprane à payer à Fred;

Les avantages :
* la rapidité d'exécution de l'opération de lecture de la valeur;
* un pied de nez à quelques compilateurs concurents

Et... Viva el PorBAJICOS compilatores !


Haut
 Profil  
 
 Sujet du message: Re: Des constantes pas forcément constantes !
MessagePosté: Sam 20/Nov/2010 19:52 
Hors ligne
Avatar de l’utilisateur

Inscription: Lun 26/Avr/2004 0:40
Messages: 12957
Ollivier a écrit:
Bonjour,

Un truc qui déchirerait, ce serait des constantes numériques pas vraiment très constantes, mais constantes quand même.
Histoire d'avoir un superbe Setup interne à un fichier exécutable.



heu! j'ai rien compris là :roll:

_________________
Image


Haut
 Profil  
 
 Sujet du message: Re: Des constantes pas forcément constantes !
MessagePosté: Sam 20/Nov/2010 20:38 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 29/Juin/2007 17:50
Messages: 1901
Salut Dobro,

Ben, en fait une constante en PureBASIC qui est écrite par exemple comme ça :
Code:
#MaConstante = 5

se traduit par le nombre 5 directement écrit dans l'exécutable, et plus précisément dans l'instruction Assembleur.
L'exécution de l'instruction ASM est donc plus rapide.

Imaginons que le nombre 5 se transforme, comme par magie en un autre nombre, par exemple 1013.
Ce serait ça une "constante pas forcément constante" ou une "pseudo-constante" ou une "pseudo-variable"...

C'est un transfert de vitesse d'exécution en fait. Car, comparé à l'utilisation d'une variable qui jouit d'un équilibre assez conséquent en terme de durée de modification et en terme de durée de lecture...

Ex:
100 µs pour modifier la valeur de MaVariable.I
et 30µs pour lire la valeur de MaVariable.I

...dans le cas d'une pseudo-variable, il n'y aurait pas cet équilibre: on aurait des durées de traitement différentes favorisant la vitesse de lecture:

Ex:
5000µs pour modifier la valeur de #MaPseudoVariable
et 5µs pour lire la valeur de #MaPseudoVariable

Ce n'est irréaliste car il est fréquent de lire une valeur constante des milliards de fois durant l'exécution d'un programme et de la modifier moins d'une dizaine de fois.


Haut
 Profil  
 
 Sujet du message: Re: Des constantes pas forcément constantes !
MessagePosté: Lun 22/Nov/2010 15:05 
Hors ligne

Inscription: Mer 11/Nov/2009 18:17
Messages: 1251
Localisation: Poitiers (Vienne)
D'ailleur on ma dit un jour (un mec) en pascale je croix
que il pouvais modifier ces constantes, ce qui m'as un peut laisser perplex :roll:

Mais éffectivement ce serais pas mal sa mais je voie plus l'interet d'une constante
et pourquoi ne pas utiliser une variable mise a part la vitesse de lecture et écriture evidement :)

_________________
La vie, C'est comme, Une boitte, De startis, On en voie, De toutes, Les couleurs !

Mon forum http://purebasic.forumphp3.com/index.php


Haut
 Profil  
 
 Sujet du message: Re: Des constantes pas forcément constantes !
MessagePosté: Lun 22/Nov/2010 15:23 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 29/Juin/2007 17:50
Messages: 1901
Dayvid a écrit:
(1) pourquoi ne pas utiliser une variable
(2) mise a part la vitesse de lecture et écriture
(3) evidement

Dayvid, je n'arrive à expliquer comment tu réussis ton compte pour créer des bugs internes dans mon bulbe.
1) Tu expliques quelque chose qui rend caduque ma suggestion;
2) Tu jartes la raison principale pour laquelle j'ai fait cette suggestion (un gain de temps assez important en lecture);
3) Tu impliques une assurance en quelque chose que je n'arrive toujours pas à dicerner;

Bref, reviens dès que tu peux sur le forum. Tes contradictions intrinsèques vont me mettre K.O. cash, ce qui enthousiasmera quelques membres du forum!

Je vais me fluidifier le sang à coup de Doliprane, parce que là je sens que ça grouille de petits bouchons...


Haut
 Profil  
 
 Sujet du message: Re: Des constantes pas forcément constantes !
MessagePosté: Ven 26/Nov/2010 20:16 
Hors ligne
Avatar de l’utilisateur

Inscription: Jeu 14/Oct/2004 19:48
Messages: 417
Ca me donne l'occasion de poser une question qui me turlupine:
Sur CPC6128, je faisais des codes auto-modifiables en mettant un label pour connaitre l'adresse de l'instruction à modifier en assembleur et puis je prenais la valeur de l'instruction à remplacer et je l'écrivais à la place quand nécessaire. (ce qui pourrait revenir à modifier une constante aussi bien...)
C'est faisable sur pc ? (faut il modifier l'adresse du segment de donnée pour le superposer à celui des instructions ? est-ce faisable?)

_________________
Ceci n'est pas une signature.


Haut
 Profil  
 
 Sujet du message: Re: Des constantes pas forcément constantes !
MessagePosté: Ven 26/Nov/2010 22:44 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 11/Fév/2005 17:34
Messages: 3063
Localisation: Arras, France
Pas de souci.
Code:
CompilerIf #PB_Compiler_Debugger = 1
  Debug "Pas de debogueur, merci"
  End
CompilerEndIf

Goto CODE

!section '.code' code readable writeable executable align 8

CODE:

a = 0

CopyMemory(?DEBUT, ?DEST, ?FIN-?DEBUT)

DEBUT:
a+2
FIN:

DEST:
a+3

MessageRequester("Code modifié", Str(a))

End

_________________
The shooting crew ~> http://www.shootingcrew.com
Bobble Puzzle ~> http://djes.free.fr


Haut
 Profil  
 
 Sujet du message: Re: Des constantes pas forcément constantes !
MessagePosté: Ven 26/Nov/2010 23:15 
Hors ligne
Avatar de l’utilisateur

Inscription: Jeu 29/Juil/2004 16:33
Messages: 2118
Localisation: . <------ ici
djes,

ton code active mon antivirus sur l'exe de purebasic :lol:






@++

_________________
Windows 8 x64, processeur core i7 2.93ghz, mémoire ram 10Go, 2x ati radeon hd 5750 1Go chacune
PureBasic 5.11 x86 & x64 DirectX 11


Haut
 Profil  
 
 Sujet du message: Re: Des constantes pas forcément constantes !
MessagePosté: Ven 26/Nov/2010 23:36 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 11/Fév/2005 17:34
Messages: 3063
Localisation: Arras, France
venom a écrit:
djes,
ton code active mon antivirus sur l'exe de purebasic :lol:
@++

Normal, ils n'aiment pas ce genre de pratique ;) Essaye d'enlever le readable de la section pour voir...

_________________
The shooting crew ~> http://www.shootingcrew.com
Bobble Puzzle ~> http://djes.free.fr


Haut
 Profil  
 
 Sujet du message: Re: Des constantes pas forcément constantes !
MessagePosté: Sam 27/Nov/2010 1:04 
Hors ligne
Avatar de l’utilisateur

Inscription: Lun 26/Avr/2004 0:40
Messages: 12957
Ollivier a écrit:
Code:
#MaConstante = 5

se traduit par le nombre 5 directement écrit dans l'exécutable, et plus précisément dans l'instruction Assembleur.
L'exécution de l'instruction ASM est donc plus rapide.



je ne suis pas un spécialiste de l'assembleur , mais il me semble que ce que tu dis là est faux
ce que tu décris correspond plutot au Macro au moment du linkage

je crois qu'une constante est écrite dans une zone Data
avec DC xxx quelque chose (ass 68000)....
ou equ sur x86

alors qu'une variable
Adresse1 DD 0F70ABCDh
sont des zones mémoires qui sont réservées lors de l'assemblage.

c'est la seule différence. non ? ..
au niveau temps d'exécution ça doit etre kif kif !



sauf s'il y a traitement comparaison, addition, etc ...
dans ce cas , ce n'est pas les variables qui sont plus longue a utiliser, mais
ces opérations...

additionner 2 constantes doit prendre autant de temps
que d'additionner 2 variables non ?


ce que tu veux reviens a faire du code Automodifié
le Soldat inconnu a fait une démonstration de ça , il y a longtemps (recherche Code auto modifié)

_________________
Image


Haut
 Profil  
 
 Sujet du message: Re: Des constantes pas forcément constantes !
MessagePosté: Sam 27/Nov/2010 12:35 
Hors ligne
Avatar de l’utilisateur

Inscription: Jeu 14/Oct/2004 19:48
Messages: 417
Djes> En fait c'est super simple ! Merci beaucoup, ça me "libère" un peu plus. :D (... de la matrice :roll: ) Par contre je ne comprend pas pourquoi a n'est pas égal à 4 (a+2 et a+2 de la zone copié). une explication svp :?

Dobro>Je crois que equ définie une constante pour le compilateur assembleur (c'est une facilité comme une macro en somme) et non dans le langage lui même où comme l'a écrit Ollivier la valeur est directement écrite avec les op-codes des instructions. (mais bon je peux me tromper, je ne suis pas plus un pro de l'asm) :??:

_________________
Ceci n'est pas une signature.


Haut
 Profil  
 
 Sujet du message: Re: Des constantes pas forcément constantes !
MessagePosté: Sam 27/Nov/2010 15:18 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 11/Fév/2005 17:34
Messages: 3063
Localisation: Arras, France
Fig a écrit:
Djes> En fait c'est super simple ! Merci beaucoup, ça me "libère" un peu plus. :D (... de la matrice :roll: ) Par contre je ne comprend pas pourquoi a n'est pas égal à 4 (a+2 et a+2 de la zone copié). une explication svp :?

Chez toi ça ne fait pas 4?????????????????????????????????

_________________
The shooting crew ~> http://www.shootingcrew.com
Bobble Puzzle ~> http://djes.free.fr


Haut
 Profil  
 
 Sujet du message: Re: Des constantes pas forcément constantes !
MessagePosté: Sam 27/Nov/2010 16:42 
Hors ligne
Avatar de l’utilisateur

Inscription: Jeu 14/Oct/2004 19:48
Messages: 417
Non, je viens de revérifier, ça me sort "2". :? ...et quelques secondes après avoir fermé la fenêtre: un problème de compilation.
Notamment:
Fichiers aidant à décrire le problème :
C:\Users\Figou\AppData\Local\Temp\WERD138.tmp.WERInternalMetadata.xml
C:\Users\Figou\AppData\Local\Temp\WERF0CA.tmp.appcompat.txt
C:\Users\Figou\AppData\Local\Temp\WERF2CD.tmp.mdmp

PureBasic 4.51 (Windows - x64) sur W7 x64

édite: le problème de compilation n'est pas systématique. parfois, ca marche bien, juste ça donne toujours 2.

_________________
Ceci n'est pas une signature.


Dernière édition par Fig le Sam 27/Nov/2010 17:16, édité 1 fois.

Haut
 Profil  
 
 Sujet du message: Re: Des constantes pas forcément constantes !
MessagePosté: Sam 27/Nov/2010 17:13 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 11/Fév/2005 17:34
Messages: 3063
Localisation: Arras, France
Hum! Donc ça ne marche pas. Montre donc le code généré en assembleur (compilateur en ligne de commande, option /COMMENTED, ou l'excellent outil PureASM de notre ami Erix14)

_________________
The shooting crew ~> http://www.shootingcrew.com
Bobble Puzzle ~> http://djes.free.fr


Haut
 Profil  
 
 Sujet du message: Re: Des constantes pas forcément constantes !
MessagePosté: Jeu 02/Déc/2010 19:04 
Hors ligne
Avatar de l’utilisateur

Inscription: Mer 09/Nov/2005 9:53
Messages: 2590
djes a écrit:
Fig a écrit:
Djes> En fait c'est super simple ! Merci beaucoup, ça me "libère" un peu plus. :D (... de la matrice :roll: ) Par contre je ne comprend pas pourquoi a n'est pas égal à 4 (a+2 et a+2 de la zone copié). une explication svp :?

Chez toi ça ne fait pas 4?????????????????????????????????

4 chez moi

_________________
i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!
i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!
i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!
i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!

http://xmas.free.fr/


Haut
 Profil  
 
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 27 messages ]  Aller à la page 1, 2  Suivante

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages

Rechercher:
Aller à:  
cron

 


Powered by phpBB © 2008 phpBB Group | Traduction par: phpBB-fr.com
subSilver+ theme by Canver Software, sponsor Sanal Modifiye