CPC Rulez
https://cpcrulez.fr/forum/

PhrozenC : Programmer en C sur un vrai CPC
https://cpcrulez.fr/forum/viewtopic.php?f=4&t=4167
Page 1 sur 3

Auteur :  norecess [ 24 Mars 2010, 13:55 ]
Sujet du message :  PhrozenC : Programmer en C sur un vrai CPC

Salut les gars !

Cela fait depuis quelques temps que je travaille autour d'un compilateur C pour Amstrad CPC. Ce travail étant à présent terminé, voilà la version 1.0 !

Le nom du compilateur est PhrozenC, et est disponible sous plusieurs versions :
- une version PC en ligne de commande
...mais le meilleur est à venir :
- une version CPC format ROM (version à préférer si possible)
- une version CPC format 64Kb (executable standalone puis reset)
- une version CPC format 128Kb-RSX

Quelle est la particularité du truc ?
Sur PC, on compile un .C et ça donne en output un .ASM prêt à être compilé sous WinAPE Sur CPC, on compile un .C et ça donne en output le même .ASM prêt à être compilé sous... Maxam !
Je tiens à préciser que dans les deux cas, on se retrouvera avec le même .ASM généré.
Chacun peut donc choisir comment programmer en C pour CPC, que ce soit sur CPC pour les puristes (bonheur que je peux comprendre aisément ;) ou bien en utilisant un PC pour profiter d'une compilation ultra-rapide.

Le tout vient avec une documentation au format PDF de 33 pages, qui couvre tout ce qu'il est nécessaire de savoir pour se lancer dans la programmation C sur CPC avec PhrozenC. Il y a même un petit tutorial de programmation en C pour les néophytes.

Dans la même lignée, il y a des sources d'exemple et même quelques librairies utilitaire pour aider à la gestion de fichiers, mémoire, graphisme, manipulation de chaines de caractère, etc..

Enfin, il s'agit d'une version 1.0 . Contrairement à une démo ou un jeu qui se veulent par définition "la version diffusée est la version finale, je n'y touche plus", j'ai bien l'intention d'être attentif aux retours et de faire évoluer les versions en conséquence.

SVP avant toute question technique, veuillez-vous assurer d'avoir bien lu la doc.

Merci à toutes les personnes qui ont pu m'aider de près comme de loin au portage du compilo ! Car ça a pas été une mince affaire, cette histoire... ;)

Merci pour votre attention,
NoRecess

Le lien :
http://sourceforge.net/projects/phobia/ ... p/download

Screenshots :
https://sourceforge.net/apps/trac/phobi ... enshot.png
https://sourceforge.net/apps/trac/phobi ... nshot2.png
https://sourceforge.net/apps/trac/phobi ... nshot3.png

Auteur :  Fredouille [ 24 Mars 2010, 21:19 ]
Sujet du message :  Re: PhrozenC : Programmer en C sur un vrai CPC

Super intéressant ce projet :)
Étant adepte du C, je vais jeter un coup d'oeil attentif à ta doc.

Si j'ai bien compris, il s'agit d'un compilo mais pas d'un linker. Et ton compilo génère un ficher texte .ASM qu'il faut après assembler et linker.

J'imagine que ta doc explique quelles librairies ajouter pour s'interfacer avec le CPC.

Auteur :  norecess [ 24 Mars 2010, 22:24 ]
Sujet du message :  Re: PhrozenC : Programmer en C sur un vrai CPC

Oui, c'est bien ca, ca converti directement un .C en source .ASM

Par contre il y a pas de notion de link, c'est vraiment une conversion complete d'un source C vers un fichier ASM (les INCLUDE sont autorisés, donc tu peux inclure plusieurs sources C en un seul, donc gerer des libs de cette maniere).

SVP, lire la doc... ca m'a pris une semaine complete pour la faire pour essayer de prevoir toutes les questions, 36 pages c'est pas rien, donc la lire puis ensuite poser les questions techniques seulement si pas présent dans la doc, merci.

Auteur :  hERMOL [ 25 Mars 2010, 09:08 ]
Sujet du message :  Re: PhrozenC : Programmer en C sur un vrai CPC

je créé une page sur le site, dans la nouvelle section CODING/CROSSDEV

wiki/doc en ligne : http://sourceforge.net/apps/trac/phobia/wiki/PhrozenC

Auteur :  norecess [ 25 Mars 2010, 14:07 ]
Sujet du message :  Re: PhrozenC : Programmer en C sur un vrai CPC

Merci Hermol.

La version 1.1. est déjà en cours, dont 2 bugfixes importants à venir.

Pour le moment, à part quelques reactions positives, pas vraiment de veritable engouement au portillon. Qu'importe, car toutes mes prochaines prods seront malgres tout developpées avec PhrozenC, et c'est toujours bien de paufiner ses outils maison :)

Auteur :  fano [ 25 Mars 2010, 18:05 ]
Sujet du message :  Re: PhrozenC : Programmer en C sur un vrai CPC

Très bonne initiative, pas encore eu le temps de voir plus en profondeur néanmoins peut on espérer avoir les structs pour une version prochaine ?

Auteur :  PulkoMandy [ 25 Mars 2010, 18:49 ]
Sujet du message :  Re: PhrozenC : Programmer en C sur un vrai CPC

une intégration dans cpcsdk peut être ? (avec génération de code compilable par sjasm ? :))

Sinon, ça a l'air sympa, mais je testerai que quand je commencerai mon prochain projet.

Auteur :  norecess [ 25 Mars 2010, 20:54 ]
Sujet du message :  Re: PhrozenC : Programmer en C sur un vrai CPC

fano: non, PhrozenC restera K&R. Si tu souhaites du Ansi C, je te suggeres de te rediriger vers SDCC ou (moins bien) z88dk.

Cela dit, reflechis un peu au contexte CPC, as-tu vment besoin des structs quand tu as fait 20 ans d'ASM ?

Pulko: les sources sont sur sourceforge ; cependant je ne souhaite pas me "divertir" a supporter la planete entière.. je me concentre donc sur ce qui est "mainstream" sur CPC, a savoir WinAPE et Maxam.

Auteur :  BDCIron [ 25 Mars 2010, 21:24 ]
Sujet du message :  Re: PhrozenC : Programmer en C sur un vrai CPC

Perso cela ne me servira pas, mais j'applaudis le travail.

Auteur :  norecess [ 25 Mars 2010, 22:36 ]
Sujet du message :  Re: PhrozenC : Programmer en C sur un vrai CPC

fano: pour une réponse un peu plus pro que tout a l'heure, sache que la version du compilo sur CPC une fois decompilé fait plus de 40Ko en RAM (avec tous les buffers initialisés pour la compilation) il y aurait bien du mal à rajouter de quoi... j'ai (déjà !) du introduire de la compression dedans pour tenir dans une taille correcte pour le système.

Auteur :  TotO [ 26 Mars 2010, 21:49 ]
Sujet du message :  Re: PhrozenC : Programmer en C sur un vrai CPC

Génial ! :winner:

Ca va me permettre de programmer sur CPC et faire en douceur la transition vers l'ASM, en analysant l'assembleur généré par mon code source ! :)

Je fonce lire la doc ; Merci.

Auteur :  norecess [ 27 Mars 2010, 04:27 ]
Sujet du message :  Re: PhrozenC : Programmer en C sur un vrai CPC

Salut,

Je viens juste de releaser la version 1.1, pour le download c'est ici : https://sourceforge.net/projects/phobia/

Changelog :

Version 1.1
- CC (Win32) Fixed crash when included file does not exist
- Fixed crash when calling CC with a C file entirely created on a CPC
- Fixed CS RSX-command usage. Now only ROM-based, but 100% safe.
- Updated documentation with compiler internal section

Version 1.0
- Initial release..

Auteur :  TotO [ 27 Mars 2010, 09:15 ]
Sujet du message :  Re: PhrozenC : Programmer en C sur un vrai CPC

Merci.

Petite coquille dans la section 5.4 (variables declaration) :
"unsigned char (which is 8 bits, values from 0 to 256)" :)

Auteur :  Megachur [ 26 Juil 2010, 20:09 ]
Sujet du message :  Re: PhrozenC : Programmer en C sur un vrai CPC

j'ai vu un ptit truc à optimiser

code d'origine :


Code :
strcpy( dest, src )
   char *dest;
   char *src;
{
#asm
   pop bc
   pop hl
   pop de
   push de
   push hl
   push bc
   
strcpyloop:
   ld a, (hl)
   ld (de), a
   or a
   ret z
   ld (de), a
   inc hl
   inc de
   jp strcpyloop
#endasm
}


optim :

Code :
strcpy( dest, src )
   char *dest;
   char *src;
{
#asm
   pop bc
   pop hl
   pop de
   push de
   push hl
   push bc
   
xor a ; est-ce que c'est normal qu'on sauvegarde pas af par une push ?

strcpyloop:
   or (hl) ; si la chaine en entrée est vide faut mettre le test en premier
   ret z
ldi ; sinon à quoi sert le pop/push BC d'avant ? ;-)
   jp strcpyloop
#endasm
}


durée code origine 16 nops -> durée optim 12 nops (+1 avant la boucle)

:biere:

Auteur :  Megachur [ 26 Juil 2010, 20:11 ]
Sujet du message :  Re: PhrozenC : Programmer en C sur un vrai CPC

TotO a écrit :
Merci.

Petite coquille dans la section 5.4 (variables declaration) :
"unsigned char (which is 8 bits, values from 0 to 256)" :)


bah non... un char c'est de 00 (&00) a 255 (&ff)...

soit 256 valeurs possibles ! :mdr:

Page 1 sur 3 Le fuseau horaire est UTC+1 heure
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/