fonctionnement de la compilation de PB

Sujets variés concernant le développement en PureBasic
minirop
Messages : 321
Inscription : mer. 02/août/2006 21:06

fonctionnement de la compilation de PB

Message par minirop »

salut,
en fait j'aimerais savoir comment marche PB.
le fihcier .pb est "transformé" en .asm par PBCompiler.exe puis le fichier .asm est compilé avec FAsm.exe et finalement édité avec folink.exe (éditeur de liens)

j'ai bon ?

merci.
KarLKoX
Messages : 1191
Inscription : jeu. 26/févr./2004 15:36
Localisation : France
Contact :

Message par KarLKoX »

Oui c'est ça et c'est ce que j'ai aussi compris.
J'ajouterais que polink provient de pelle's c qui lui même lie via ses .lib (qui sont dans x:\Purebasic\PureLibraries\Windows\Libraries ).
"Qui baise trop bouffe un poil." P. Desproges
minirop
Messages : 321
Inscription : mer. 02/août/2006 21:06

Message par minirop »

autre question :
les fichiers à inclure (fichiers .pbi) ce sont simplement les fichiers .h "transformé" en purebasic et les fichiers .lib sont les mêmes que gcc (par ex)
?
Anonyme

Message par Anonyme »

lut!
oui les .pbi n'ont rien de spéciale, il se comporte comme des .pb le "i" c'est juste pour le reconnaitre. pr les lib je dirais oui aussi.

@++
minirop
Messages : 321
Inscription : mer. 02/août/2006 21:06

Message par minirop »

et sinon quelqu'un sait si l'analyseur à été écrit "from scratch" ou alors utilisant lex/yacc (ou flex/bison)
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message par Flype »

connaissant PB depuis quelques années je suis quasiment certain que l'analyseur lexical est développé 'maison' ou *from scratch* comme tu dis.
mais je ne peux pas confirmer.

lex/yacc, flex/bison est pourtant sacrément efficace.

j'avais essayé un jour par curiosité avec une idée en tête.
je voulais voir s'il était possible d'utiliser lex/.... pour faire un convertisseur de fichiers .h (voir .c) vers PureBasic.
Image
Avatar de l’utilisateur
Progi1984
Messages : 2659
Inscription : mar. 14/déc./2004 13:56
Localisation : France > Rennes
Contact :

Message par Progi1984 »

from scratch = à la main, à l'arrache !

Flype > Et alors via lex ?
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message par Flype »

oui je sais, on dit aussi plus rarement ( surtout depuis le 11.09.01 ) : "From Ground Zero".

donc lex, bah ouai ca le fait mais après faut s'accrocher. moi je chercherais plutot en fait un programme (robuste) qui transforme un fichier .h en ByteCode (documenté) pour ensuite transformé le ByteCode généré en source PureBasic. Ca doit exister un tel programme ?
Image
Avatar de l’utilisateur
Progi1984
Messages : 2659
Inscription : mar. 14/déc./2004 13:56
Localisation : France > Rennes
Contact :

Message par Progi1984 »

Que veux tu dire en ByteCode : binaire ? assembleur ?
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message par Flype »

ni l'un ni l'autre en fait :D

enfin presque - je dirais Binaire mais pas Exécutable.

je dirais que c'est transformer un code source en Binaire Non Exécutable - avant sa compilation en Binaire Exécutable.

PureBasic n'applique pas ce principe. Il fonctionne plutot comme çà :

Code Source -> Source ASM -> Binaire Exécutable.

D'autres langages font comme çà :

Code Source -> ByteCode -> Binaire Exécutable.


Donc le ByteCode c'est un pseudo-exécutable - facile à parser (contrairement à un code source) avant la compilation réelle.
ca permet par ex à un langage de générer le ByteCode d'un source quelque soit l'OS / CPU sur lequel il va tourner.
Image
Avatar de l’utilisateur
Progi1984
Messages : 2659
Inscription : mar. 14/déc./2004 13:56
Localisation : France > Rennes
Contact :

Message par Progi1984 »

ce qui permet le cross compiling ?
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message par Flype »

oui mais ce n'est pas tout. mais ca facilite les choses c'est clair. le cross compiling c'est (par ex) compiler un code source depuis WinXP pour créer un exécutable MacOS ou Linux. Donc l'exe ainsi généré ne fonctionnera pas sur la machine qui a servit à la compilation. Donc sur la machine hote (WinXP) il faudra un générateur d'exécutable MacOS et un générateur d'exécutable Linux.
Image
Avatar de l’utilisateur
Progi1984
Messages : 2659
Inscription : mar. 14/déc./2004 13:56
Localisation : France > Rennes
Contact :

Message par Progi1984 »

Merci ! Au fait,pour ton .h => bytecode, j'ai fait des recherches mais que dalle ! Dsl ! :(
minirop
Messages : 321
Inscription : mer. 02/août/2006 21:06

Message par minirop »

Flype > tu confonds "bytecode" (comme les fichiers .class de java) et "code-objet" (.o ou .obj)
d'ailleurs PB passe par un fichier .o sinon on pourrait pas le compiler vu que on passe obligatoirement de .asm (ou .s) en .o et folink prends tous les fichiers .o et crée UN .exe
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message par Flype »

c'est possible que je confonde effectivement mais ca revient quasiment au même, non ? çà tombe bien que tu en parles, je n'avais pas approfondie la chose mais çà m'intéresse...

J'ai quelques questions donc pour ceux qui connaissent bien les rouages du C.

Quelle serait la meilleure méthode pour faire .h vers .pb ?

La solution de se faire son propre analyseur lexical c'est bcp trop de travail et ne m'intéresse pas.
En principe, si j'ai bien compris,
1/ on commence par se choisir un compilateur C (vc, pellesC, lcc, etc...)
2/ on prends le fichier d'include C qui nous intéresse (par ex. WINVER.H)
3/ on compile le fichier avec le compilateur C.
4/ On récupère le fichier WINVER.o
5/ On l'interprête/parse avec un programme réalisé avec PureBasic, lequel génère en sortie un fichier WINVER.PBI

. Cela parait-il réalisable ?
. Le format des fichiers .o est il toujours le même ou bien dépend-il du compilateur C choisit (lcc, pellesC, ...) ?
. Ce format ou ces formats sont-ils libres et bien documentés ?
Image
Répondre