Une bibliothèque de routines asm [Forums - HC908 et S08]
Une bibliothèque de routines asm [Forums - HC908 et S08]
Pseudo Pass se souvenir de moi     Créer un compte
ARTICLES et TELECHARGEMENTS ~ FORUMS ~ LIENS  
 
             
 
Recherche
 
   
 

Parcourir ce sujet :   1 Utilisateur(s) anonymes





Une bibliothèque de routines asm
Intéressé
Inscrit:
26/10/2011 12:49
De 97420 LE PORT
Messages: 34
Hors Ligne
Bonjour à tous les "asmistes"!

Je n'ai encore rien programmé en asm Freescale, mais je voudrais bien le faire et j'ai étudié un cours d'asm pour la famille S08. Et ce cours ne répond pas du tout à la question essentielle. Je rappelle le pb de l'asm.
.
Le pb de l'asm est que sa programmation est très lente, vu que chaque action doit être construite par petites instructions élémentaires à choisir et tester. A chaque nouveau programme, il faut recommencer les mêmes routines, c'est lent et pénible sauf si on peut simplement, après avoir mis au point une routine, on lui donne un nom et on la range dans une bibliothèque, pour que dans un autre programme, son nom suffise à l'incorporer, comme si c'était une instruction, avec toutes les possibilités d'une routine normale.
.
Le gain de temps est alors appréciable, et on constitue cette réserve de routines progressivement en écrivant de nouveaux programmes: cela constitue en quelque sorte son "C" personnel, avec en plus du gain de temps la souplesse de la possibilité de savoir exactement ce que chaque instruction fait et la possibilité de modifier, ce qui n'est pas le cas du C avec ses 400 instructions imposées.
.
Ce n'est que par cette possibilité de bibliothèque personnelle que l'assembleur prend sa puissance, et la question que je pose aux habitués de l'asm du CW V6,3 c'est: CETTE POSSIBILITE Y EXISTE-T-ELLE ?
.
Merci pour vos réponses.
Cordialement
pont

Posté le : 30/01/2012 05:43
Transférer la contribution vers d'autres applications Transférer


Re: Une bibliothèque de routines asm
Pilier de la communauté
Inscrit:
27/09/2005 18:07
De Metz
Messages: 1335
Hors Ligne
Citation :
CETTE POSSIBILITE Y EXISTE-T-ELLE
oui bien sûr, je ne vis pas ce qui pourrait empêcher de créer ses propres librairies. On peut même crée ses propres macro.
La doc de l'assembleur du S08 te donnera toutes les précisions.

Citation :
ce qui n'est pas le cas du C avec ses 400 instructions imposées
Par contre là, je ne vois pas de quoi tu parles. Le C ne possède qu'un nombre très limité d'instructions: l'affectation, for ..., do ..., while ..., swtich ..., if ..., etc. Sûrement pas 400 en tout cas.
Si tu veux parler des fonctions des librairies standard, libre à toi de les utiliser ou non. Tu peux faire les tiennes, les écrire en assembleur si tu veux, mais en tout cas elles ne sont pas imposées.

Jacques


Posté le : 30/01/2012 13:12
Transférer la contribution vers d'autres applications Transférer


Re: Une bibliothèque de routines asm
Pilier de la communauté
Inscrit:
13/10/2005 10:06
De haute-savoie (74)
Messages: 1162
Hors Ligne
Voir le post de bobly02 sur lequel j'ai répondu, mais en C il n'est pas imposé d'utiliser les librairies ANSI !!!
Le langage C ne possède que quelques instructions de base (moins nombreuses que l'ASM d'ailleurs). Libre à toi de te faire des librairies en ASM ou en C pour ajouter à tes projets

Personnellement, l'expérience grandissant, je capitalise des fonctions qui si elle sont bien écrite (portabilité, clareté, documentation, etc) sont réutilisables sans changer une seule ligne de code. Je les ajoute à mon projet comme une librairie. C'est le début de la programmation objet !
Ainsi j'ai des routines ASM et C que j'incorpore au gré de mes besoins dans mes projets : arithmétique (en ASM souvent), afficheurs LCD hexa ou graphiques, gestion de menu, traitement du signal, gestion de protocoles de comm, de composants spécifiques (je fais de la RF), etc etc etc....

In fine, après quelques années, il m'arrive de faire des applications en une journée utilisant pourtant des ressources complexes... Mais cela suppose une certaine discipline dans l'écriture de ses fonctions.

Pont, je pense que ta vision du C est erronée. Comme dis précedement, ce n'est pas le compilateur qui est limitant, mais plutôt la connaissance de ce qu'il se passe derrière...

Cordialement
Stéphane


Posté le : 30/01/2012 14:58
Transférer la contribution vers d'autres applications Transférer


Re: Une bibliothèque de routines asm
Intéressé
Inscrit:
26/10/2011 12:49
De 97420 LE PORT
Messages: 34
Hors Ligne
Merci de vos réponses, c'est très sympa,
.
A Jacques,
1) C'est bon, je suis rassuré si je peux stocker mes routines à l'état source, les macros, même de gros morceaux de programme, c'est pratique pour permettre de découper son projet. Par ex je voudrais faire en premier un minuteur de cuisine, j'ai trouvé qu'il y avait 11 fonctions à remplir, je pourrai travailler certaines, et donner les autres à un copain, ensuite on recollera tout. Et on assemblera.
.
2) Oui, chez Borland, pour le PC, le Turbo-Pascal a 200 instructions, et le Turbo C 400. C'est ce que j'ai compté.
.
A Stéphane,
J'ignorais les détails que vous indiquez, je verrai dans l'avenir à en tirer parti, pour le moment, je vais rester dans le simple, l'essentiel est que ça marche.
Et vous dites exactement comme moi en indiquant que plus vous travaillez et stockez, cela crée une sorte de langage qui vous est personnel et vous permet des performances en temps de développement impossibles à obtenir autrement Et de plus cela augmente le secret de vos créations.
Effectivement, le problème du C et autres que l'assembleur, c'est que l'on ne sait pas ce qui en sort à la compilation. "Traduire=trahir"
Enfin, je crois avoir trouvé sur ebay un support pour le MC9S08GB, à 64 pattes, on va voir si j'arrive à souder cela, je n'ai pas très bien compris où on peut acheter le BDM en direct et quelques µC, le site d'achat n'est pas très clair. Le connecteur à 6 broches BDM est-il complet?
Cordialement
pont

Posté le : 30/01/2012 16:31
Transférer la contribution vers d'autres applications Transférer


Re: Une bibliothèque de routines asm
Pilier de la communauté
Inscrit:
13/10/2005 10:06
De haute-savoie (74)
Messages: 1162
Hors Ligne
@Pont:

- Le connecteur BDM 6 broches est complet. (en fait 4 fils sont utilisés seulement). Une interface USB Multilink de P&E est dispo chez Farnell par exemple pour environ 80 euros HT (ici : http://fr.farnell.com/freescale-semic ... -prog-hcs08-12/dp/1165943)
Mais il est possible d'en réaliser un sois même pour 10 ou 15 euros je pense. (ici : http://www.68hc08.net/articles.item.1 ... t-S08-S12-ColdfireV1.html)

- Voir la rubrique 'Articles et téléchargement' de ce site... Il y a pas mal d'articles pour les débutants qui traitent des CPU freescale, de Codewarrior et de comment compiler son premier projet, des interface de programmation, des librairies de fonctions, etc...

- Souder un 64 pins LQPF ne pose pas de problème. Il faut une panne fine et souder tout un côté ensemble (court circuit sur toutes les pattes), puis enlever le surplus d'étain avec de la tresse à dessouder...

- Pour Turbo Pascal ou autre, attention, ce ne sont pas des instructions que vous comptez mais des fonctions ! Ces compilateurs comme tous les compilateurs intègrent des librairies de fonctions que vous pouvez ou pas ajouter à votre code... Par exemple des instructions C sont celles listées par Jacques (while, for, if, switch, etc) alors que printf, atof, cos, sin, malloc, etc.. sont des fonctions situées dans des librairies. Elle ne sont d'ailleurs pas documentées dans un livre ne traitant que de C genre Kenigan & Ritchie

Sur des petits CPU je n'utilise en général aucune de ces fonctions pour plusieurs raisons mais pour faire simple car on ne sait pas comment elles sont codées (encore qu'en cherchant bien), que l'on ne connait pas la rapidité d'exécution dans tous les cas de figure, ni l'empreinte mémoire... Enfin on ajoute du code de l'on a pas écrit, c'est quelque chose que j'ai du mal à faire pour avoir écris des applications dans des domaines ou la sécurité était importante. Lorsque l'on a beaucoup de ressources de calcul alors il devient intéressant de les utiliser afin d'avoir une facilité de conception, maintenance et portabilité qui serait impossible en ASM. J'utilise par exemple des fonctions mathématiques pow, sin, cos, de gestion memoire comme malloc, du printf, atof, itoa, etc etc .... Mais je pourrais choisir de les coder moi-même... Cependant comme un petit CPU 32-bits coute pas plus cher qu'un gros 8-bits, on peut parfois monter un peu en gamme de CPU pour pouvoir se permettre justement d'utiliser des fonctions plus évoluées et ne pas réinventer la route à chaque projet.

- On sait très bien ce que produit le C une fois compilé, il suffit de demander au compilateur de faire voir le code ASM généré. On peut ainsi vérifier rapidement si le code est optimisé, s'il vaut mieux coder d'une manière ou d'une autre pour gagner en performance.... Je le fais très souvent par exemple dans du calcul, pour vérifier l'ordre de mes opérandes, ce genre de chose...

- Bien sûr que l'on peut se créer des librairies perso et d'ailleurs c'est ce que fait tout développeur. Voir encore une fois la rubrique Téléchargement de ce site, il y a déjà plein de fonctions toutes faites (gestion mémoire, traitement du signal, afficheurs LCD, claviers, menus, protocoles de comm, etc etc...)

Un point néanmoins. Des routines ASM fonctionneront pour un processeur donné et ne seront donc pas portables à d'autres CPU. Une routine C qui n'utilise pas de fonction spécifique en librairie est portable sur n'importe quel processeur sans changer une ligne de code ! d'un simple 8-bit jusqu'à un Pentium quad core (pour imager).
Par exemple ma routine de gestion d'un afficheur graphique 128x64 a été recompilée pour un 8051 un S08 et un Coldfire, sans changer une virgule du code ! Il suffit d'intégrer son fichier *.c et *.h associé et d'appeler les fonctions.... Principe identique que les librairies ANSI des compilateurs, mais avec des fonctions qui nous sont propres.

Voici un exemple de fonctions que j'ai dans mes librairies perso, codées au fil du temps, qui sont contenue dans un fichier *.c et son *.h associé ou dans un *.asm
- routines mathématiques (que j'utilise uniquement sur les tout petit cpu)
- gestion port COM série
- gestion RS485
- Gestion SPI
- Protocole LIN
- Protocole Modbus
- gestion afficheur LCD alphanumérique
- gestion afficheur graphique 128x64
- gestion clavier
- gestion menu
- gestion de lecture/effacement/écritures de mémoires flash (interne au cpu ou externes)
- gestion ADC, DAC, ...
- interpréteur de ligne de commande (permettant de causer avec mon cpu via un terminal)
- séquenceur de tâches
- drivers pour des composants spécifiques
- ...

Ce ne sont que des exemples, j'en ai plein comme ça que je crée, que je mets au point et que je stocke pour les réutiliser. Cela impose toutefois d'avoir une structure bien établie et propre pour écrire ses fonctions afin qu'elles soient des boites noires que l'on réutilise sans se soucier de ce qu'il y a dedans.
Si c'est bien écrit, dans un programme C, il suffit de faire un #include "fichier.h" et d'appeler les fonctions qui sont dedans pour intégrer la fonction à mon projet....

Voilà, en espérant que ces quelques indices vous donneront le goût de travailler en C comme en ASM sur les CPU

Stéphane

Posté le : 30/01/2012 17:03
Transférer la contribution vers d'autres applications Transférer


Re: Une bibliothèque de routines asm
Pilier de la communauté
Inscrit:
13/10/2005 10:06
De haute-savoie (74)
Messages: 1162
Hors Ligne
j'ajoute que les CPU sont aussi disponibles chez farnell ou autre à l'unité....

Stéphane

Posté le : 30/01/2012 17:06
Transférer la contribution vers d'autres applications Transférer


Re: Une bibliothèque de routines asm
Pilier de la communauté
Inscrit:
27/09/2005 18:07
De Metz
Messages: 1335
Hors Ligne
2Ouichez Borlandpour le PCle Turbo-Pascal a 200 instructionset le Turbo C 400. C'est ce que j'ai compté.
Je demande à voir ...

Un scan de la doc résumant les instructions?
Comme je l'ai mentionné plus haut ainsi que Stéphane, tu confonds les instructions du langage avec les fonctions des bibliothèques.

Jacques

Posté le : 31/01/2012 00:03
Transférer la contribution vers d'autres applications Transférer


Re: Une bibliothèque de routines asm
Intéressé
Inscrit:
26/10/2011 12:49
De 97420 LE PORT
Messages: 34
Hors Ligne
Oui, Jacques, elles figurent sur mon cahier de cours de programmation en Pasca!. Je n'ai jamais enseigné de C, car cela n'apporte pas grand chose de plus. Si j'avais votre adresse je pourrais vous envoyer la photocopie de la liste.
Cordialement
pont

Posté le : 04/02/2012 19:04
Transférer la contribution vers d'autres applications Transférer


Re: Une bibliothèque de routines asm
Pilier de la communauté
Inscrit:
23/10/2005 11:40
De Aix les Bains (73)
Messages: 1924
Hors Ligne
Salut

Peux tu nous les scanner ou nous citer quelques une des ces "instructions", une qui fait des choses puissantes, d'affichage ou de conversion par exemple ?


Posté le : 04/02/2012 21:09
Mieux vaut marcher dans la bonne direction que courir dans la mauvaise
Transférer la contribution vers d'autres applications Transférer



 Haut   Précédent   Suivant



Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]


Powered by XOOPS© The XOOPS Project
Contacter les administrateurs

Une bibliothèque de routines asm [Forums - HC908 et S08]