PurePicBasic - Asm

Forum de développement du compilateur asm / basic pour les puces microchip
 
AccueilAccueil  RechercherRechercher  S'enregistrerS'enregistrer  Connexion  
Le deal à ne pas rater :
Clé de licence Windows 10 PRO (version téléchargeable)
6.99 €
Voir le deal

 

 Travail en cours ...

Aller en bas 
AuteurMessage
wood51

wood51

Messages : 72
Date d'inscription : 20/01/2013
Age : 39
Localisation : Orléans

Travail en cours ... Empty
MessageSujet: Travail en cours ...   Travail en cours ... EmptyVen 25 Jan - 15:13

Bonjour ,

Voici les différentes étapes principales les que je compte suivre pour la partie Basic du compilateur ainsi que leurs états d'avancement :

  1. Analyse lexicale : OK
  2. Analyse syntaxique : OK (quelques ajustement et ajouts viendrons)
  3. Analyse sémantique : OK (quelques ajustement et ajouts viendrons)
  4. Génération du code intermédiaire : En cours ...
  5. Allocation des Registres : En cours ... de réflexion Very Happy
  6. Optimisation du code : Non ok
  7. Conversion du code intermédiaire en code intemédiare en code machine : Non ok


Le fait d'utiliser un code intermédiaire permet de séparer le compilateur en 2 parties :
  1. L'analyse générale du code source
  2. La génération du code machine


Ainsi si on veut redéfinir un autre langage (c,pascal,brainfuck Laughing ,etc ..) on reprogramme la partie 1 , si on veut changer de machine cible (Atmel,Arm etc...) on reprogramme la partie 2 .

Le chemin est long et j'avance à petits pas mais j'avance ....



Dernière édition par wood51 le Jeu 21 Fév - 21:02, édité 2 fois
Revenir en haut Aller en bas
Cpl.Bator
Admin


Messages : 50
Date d'inscription : 20/01/2013

Travail en cours ... Empty
MessageSujet: Re: Travail en cours ...   Travail en cours ... EmptySam 26 Jan - 16:07

si j'étais toi , j'attendrais un peu avant de finir la partie basic.
je vais revoir l'analyse lexicale & syntaxique en profondeur

Revenir en haut Aller en bas
https://purepicbasic.frenchboard.com
wood51

wood51

Messages : 72
Date d'inscription : 20/01/2013
Age : 39
Localisation : Orléans

Travail en cours ... Empty
MessageSujet: Re: Travail en cours ...   Travail en cours ... EmptySam 26 Jan - 16:45

Cpl.Bator a écrit:
si j'étais toi , j'attendrais un peu avant de finir la partie basic
Oh là !!! tu crois quoi a la vitesse que j'avance tu auras refait 3 fois la partie asm que je n'aurais pas finis la partie basic.

Je suis sur la sémantique : J'ai quasiment finis le vérification de la bonne déclaration des variables,arguments et fonctions . D'ailleurs en passant une petite question : Toute variables et fonctions doivent être déclaré avant utilisation . Ca te convient ou tu préfère qu'on ne soit pas obligé de déclaré les variable et fonctions ? .

Après tout çà j'attaque la vérification des types .

Que pense tu mon programme de travail , ça te semble cohérents ?


Revenir en haut Aller en bas
Cpl.Bator
Admin


Messages : 50
Date d'inscription : 20/01/2013

Travail en cours ... Empty
MessageSujet: Re: Travail en cours ...   Travail en cours ... EmptySam 26 Jan - 17:03

Citation :
Après tout çà j'attaque la vérification des types .

tu dois le faire au moment de la "tokenisation" de tes mots.



Code:
Procedure.a isVariableTyped(word$)
For i = 3 To Len(word$)-1 
  EXPREG$ + "[A-Z a-z 0-9 _]"
Next
RE = CreateRegularExpression(#PB_Any,"^[A-Z a-z]"+EXPREG$+"[.][A-Z a-z]")
If RE
  Result.a = MatchRegularExpression(RE, word$)
  FreeRegularExpression(RE) 
EndIf
ProcedureReturn Result
EndProcedure


symbol$ = "MaVariable.w"

If isVariableTyped(symbol$) = 1
  name.s = StringField(symbol$,1,".") ; on récupère le nom
  type.s = StringField(symbol$,2,".") ; le type
 
  Debug name
  Debug type
 
  ; hop , tu colles tout ca dans une stringtable...
 
EndIf

 

c'est qu'une fois que tes mots sont correctement "tokenisé" que tu peu commencer a faire des analyse.

Revenir en haut Aller en bas
https://purepicbasic.frenchboard.com
wood51

wood51

Messages : 72
Date d'inscription : 20/01/2013
Age : 39
Localisation : Orléans

Travail en cours ... Empty
MessageSujet: Re: Travail en cours ...   Travail en cours ... EmptySam 26 Jan - 17:29

Plus ou moins fait . J'utilise des déclarations de variable du type : Type Identifier
Type -> VOID,UINT8,BOOL . Les type sont dans une map avec leurs "range" , çà permettras plus tard de vérifier les dépassement

Une fois reconnu dans le lexer , lors de l'analyse syntaxique (phase de déclaration) je colle tout çà dans la table des symboles.

Je pense que "MyVar.w" seras surtout pour accéder aux Bits d'un Byte ( Laughing ) du genre PORTB.B0
Revenir en haut Aller en bas
Cpl.Bator
Admin


Messages : 50
Date d'inscription : 20/01/2013

Travail en cours ... Empty
MessageSujet: Re: Travail en cours ...   Travail en cours ... EmptySam 26 Jan - 17:33

tu sort du contexte basic , le fait de faire uint32 maVar fait plus C que basic.
Revenir en haut Aller en bas
https://purepicbasic.frenchboard.com
wood51

wood51

Messages : 72
Date d'inscription : 20/01/2013
Age : 39
Localisation : Orléans

Travail en cours ... Empty
MessageSujet: Re: Travail en cours ...   Travail en cours ... EmptySam 26 Jan - 18:43

Myvariable.uint8 et PORTB^B0 pour l'accès au bits ça te va ?
Revenir en haut Aller en bas
Cpl.Bator
Admin


Messages : 50
Date d'inscription : 20/01/2013

Travail en cours ... Empty
MessageSujet: Re: Travail en cours ...   Travail en cours ... EmptySam 26 Jan - 20:21

les types collerais si il ressemblais a ce de PB.
pour l'acces au bit , fait comme les structures , mais avec des points:

PORTB.BO = 1
Revenir en haut Aller en bas
https://purepicbasic.frenchboard.com
wood51

wood51

Messages : 72
Date d'inscription : 20/01/2013
Age : 39
Localisation : Orléans

Travail en cours ... Empty
MessageSujet: Re: Travail en cours ...   Travail en cours ... EmptySam 26 Jan - 20:40

Ok je vois ça demain ... Si tu as d'autre suggestions n'hésite pas
Revenir en haut Aller en bas
wood51

wood51

Messages : 72
Date d'inscription : 20/01/2013
Age : 39
Localisation : Orléans

Travail en cours ... Empty
MessageSujet: Re: Travail en cours ...   Travail en cours ... EmptySam 26 Jan - 23:29

Voilà mon plan d'action :

Type de variable :
  • myVar.b -> boolean OK
  • myVar.a -> unsigned int 8 bit OK
  • myVar.c -> unsigned int 16bit OK

Accès aux bits :
  • MyVar.Bx -> Accès au bit x de ma variable

Déclaration des variables :
  • Déclaration possible n'importe où dans le code OK
  • Déclaration non obligatoire (type par défaut -> unsigned int 8bit) OK

Déclarations des fonctions :
  • Déclaration non obligatoire (type de retour par défaut -> void) OK

Déclaration globales :
  • Mise en place des mot-clefs 'EnableExplicit'/'DisableExplicit' OK

Documentation :
  • Mise à jours de la grammaire OK (Mise à jours du post)
Revenir en haut Aller en bas
Contenu sponsorisé




Travail en cours ... Empty
MessageSujet: Re: Travail en cours ...   Travail en cours ... Empty

Revenir en haut Aller en bas
 
Travail en cours ...
Revenir en haut 
Page 1 sur 1

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
PurePicBasic - Asm :: PurePicBasic-
Sauter vers: