Bienvenue aux nouveaux arrivants sur FantasPic !

- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.

--- L’équipe FantasPic ---
Forum général sur l'Assembleur !

Modérateur : mazertoc

Appel de méthodes écrites en C depuis l'Assembleur
Claudius
Avatar de l’utilisateur
Passioné
Passioné
Messages : 260
Âge : 69
Enregistré en : septembre 2015
Localisation : ELANCOURT (78 - YVELINES)
Contact :

#1 Message par Claudius » sam. 16 mars 2019 18:18

Bonjour,

J'ouvre ce fil suite à la remarque pertinente de notre ami F6FCO qui a écrit :
F6FCO] a écrit (cf. encore des soucis avec MPASM)
... Bon, vous arrivez à faire du C dans l'assembleur :geek:
On apprend çà ou ? pas vu dans les cours de Bigonoff, il y a un tuto quelque part ?

Ce n'est pas courant mais c'est tout à fait possible et pour cela il faut bien maîtriser le modèle mémoire sur lequel s'appuie le compilateur C, s'assurer que c'est [très bien] documenté et tester dans un premier temps des cas vraiment simples ;-)

Pour les PIC18, c'est assez bien documenté bien que je ne l'ai jamais mis en œuvre - cf. MPLAB® C18 C COMPILER USER’S GUIDE - § 3.2 CALLING CONVENTIONS - pages 43-47 [Adobe reader pages 51-55]

En effet, la norme du langage C n'impose pas la manière avec laquelle les méthodes sont appelées et en particulier comment les arguments sont passés (dans l'ordre naturel, dans l'ordre inverse, en vrac, par registre, dans la pile, par mémoire, en plastique, en verre, etc.) et enfin comment le retour des méthodes est effectué. En résumé, les compilateurs font ce qu'il veulent et je ne parle pas de l'optimiseur qui pourrait réorganiser tout cela suivant son humeur ...
Tout repose donc sur le bon vouloir de l'éditeur du compilateur qui, en plus, n'est pas obligé de [bien] documenter sa cuisine interne ;-((

C'est pour cela que c'est assez délicat et de plus, le code écrit ne sera pas portable d'un compilateur C à un autre.
J'utilise à l'occasion SDCC - Small Device C Compiler (pour en extraire de "courtes" séquences de code [assembleur] générées que je ne souhaite pas écrire directement en assembleur ;-). Ce dernier a une toute autre stratégie que MPLAB® C18 car il s'adresse en particulier aux PIC16 qui n'ont qu'une pile d'appel de 8 niveaux dédiée aux appels / retours de fonctions et non à l'empilement / dépilement de données variables (retlw dépilant une donnée constante ;-)

Maintenant, si appeler du C à partir de l'assembleur est possible et donc s'appuyer sur un projet forcément décrit pour le C, il faut mieux faire l'inverse et insérer le code assembleur dans le code C avec le couple de directives _asm / _endasm quitte à reprendre le code assembleur d'une méthode générée à partir du C car les compilateurs C produisent maintenant, vraiment du code compact et très optimisé mais en conséquence ... illisible ou presque (j'adore !...)

Nous sommes peut-être la dernière génération qui a l'immense privilège d'écrire, de voir et de contrôler ce que le µC exécute
Profitons-en :-D (cf. L'intelligence artificielle va t-elle tuer les développeurs ? ;-))

Appel de méthodes écrites en C depuis l'Assembleur
F6FCO
Avatar de l’utilisateur
Expert
Expert
Messages : 1413
Âge : 70
Enregistré en : décembre 2017
Localisation : Furtif je suis.
Contact :

#2 Message par F6FCO » sam. 16 mars 2019 22:49

Claudius a écrit :Pour les PIC18, c'est assez bien documenté bien que je ne l'ai jamais mis en œuvre - cf. MPLAB® C18 C COMPILER USER’S GUIDE - § 3.2 CALLING CONVENTIONS - pages 43-47 [Adobe reader pages 51-55]

Merci pour la précision, çà m'évitera de chercher surtout si c'est en anglais que je maîtrise encore moins que l'assembleur :-)


Claudius a écrit :J'utilise à l'occasion SDCC - Small Device C Compiler (pour en extraire de "courtes" séquences de code [assembleur] générées que je ne souhaite pas écrire directement en assembleur ;-).

C'est une idée intéressante, par exemple pour coder une fonction mathématique, mais je suppose que ce n'est pas aussi simple que çà à mettre en oeuvre.

Claudius a écrit :Nous sommes peut-être la dernière génération qui a l'immense privilège d'écrire, de voir et de contrôler ce que le µC exécute
Profitons-en :-D (cf. L'intelligence artificielle va t-elle tuer les développeurs ? ;-))

je viens d'aller voir ce lien, même si ce n'est pas pour tout de suite c'est inquiètant. Mais il y aura toujours des bidouilleurs pour continuer à faire de l'assembleur. Je vois ce phénomène ches les radioamateurs par exemple, même si le code Morse n'est plus employé et obsolète (encre que...) on reste très nombreux à continuer à l'utiliser sur des fréquence dédiées. Il y aura toujours des nostalgiques pour continuer à programmer en assembleur :wink: .
Une porte nand prend 2 bits en entrée... la cochonne !!! :langue:

Appel de méthodes écrites en C depuis l'Assembleur
JJE
Passioné
Passioné
Messages : 399
Âge : 83
Enregistré en : novembre 2017
Localisation : Picardie

#3 Message par JJE » sam. 23 mars 2019 10:49

Bonjour Claudius,
dans un post ci-dessus, tu donnes le lien
Claudius a écrit :Source du message SDCC - Small Device C Compiler (

qui marche très bien. Mais lui, donne le lien suivant
See the Sourceforge download page for the last released version

qui produit, avec Google Chrome :
Ce site ne peut pas fournir de connexion sécurisée
sourceforge.net utilise un protocole incompatible.

Internet explorer dit à peu près la même chose :
Internet Explorer ne peut pas afficher cette page Web

AI-je un moyen de m'en sortir ?
Merci
Cordialement

JJE

C'est pas parcequ'on n'a rien à dire qu'il faut fermer sa G....e

Appel de méthodes écrites en C depuis l'Assembleur
Claudius
Avatar de l’utilisateur
Passioné
Passioné
Messages : 260
Âge : 69
Enregistré en : septembre 2015
Localisation : ELANCOURT (78 - YVELINES)
Contact :

#4 Message par Claudius » sam. 23 mars 2019 11:57

Bonjour JJE et à tous,
JJE a écrit :
dans un post ci-dessus, tu donnes le lien SDCC - Small Device C Compiler
qui marche très bien. Mais lui, donne le lien suivant

See the Sourceforge download page for the last released version
...

Ne comprends pas trop ?!..
qui marche très bien. Mais lui, donne le lien suivant ... "Marche" très bien ou pas ?!.. C'est qui "lui" ?

L'erreur se produit-elle sur la présentation de la page d'accueil ou lors du téléchargement du logiciel SDCC, de la doc ou autre...

Appel de méthodes écrites en C depuis l'Assembleur
JJE
Passioné
Passioné
Messages : 399
Âge : 83
Enregistré en : novembre 2017
Localisation : Picardie

#5 Message par JJE » sam. 23 mars 2019 12:46

excuse moi de n'être pas clair
premier lien, le tien : OK
deuxième lien, dans la page ouverte par le premier, dans le paragraohe "Downloading SDCC" :
JJE a écrit :Source du message Downloading SDCC
See the Sourceforge download page for the last released version


plantage
Cordialement

JJE

C'est pas parcequ'on n'a rien à dire qu'il faut fermer sa G....e

Appel de méthodes écrites en C depuis l'Assembleur
Claudius
Avatar de l’utilisateur
Passioné
Passioné
Messages : 260
Âge : 69
Enregistré en : septembre 2015
Localisation : ELANCOURT (78 - YVELINES)
Contact :

#6 Message par Claudius » sam. 23 mars 2019 16:08

Ok, merci JJE,

Tu parles bien de la page non sécurisée...

ScreenClipPageDownloadSDCC.jpg

... dont les 2 liens Sourceforge download page doivent aboutir sur

ScreenClipPageSourceForge.jpg

qui, elle, est justement sécurisée

Sauf erreur de ma part, je pense que tu as un pb de certificat incompatible, du moins, pour Source Forge

=> Vérifier les versions de Chrome, FireFox et Internet Explorer (je n'utilise plus ce dernier depuis belle lurette ;-) par rapport à leur dernière version
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.

Appel de méthodes écrites en C depuis l'Assembleur
JJE
Passioné
Passioné
Messages : 399
Âge : 83
Enregistré en : novembre 2017
Localisation : Picardie

#7 Message par JJE » sam. 23 mars 2019 17:25

Merci Claudius, en réinstallant FireFox, j'ai pu ouvrir cette page mais j'ai échoué à télécharger ce compilateur, ça m'aurait pourtant bien intéressé de lire du code assembleur génété par un compilateur C ou C++ pour des Pic 16X
merci encore de t'être penché sur mon problème.
Cordialement

JJE

C'est pas parcequ'on n'a rien à dire qu'il faut fermer sa G....e

Appel de méthodes écrites en C depuis l'Assembleur
Claudius
Avatar de l’utilisateur
Passioné
Passioné
Messages : 260
Âge : 69
Enregistré en : septembre 2015
Localisation : ELANCOURT (78 - YVELINES)
Contact :

#8 Message par Claudius » sam. 23 mars 2019 18:05

Ok, dommage...

Je viens de faire l'exercice en téléchargeant puis installant le programme sdcc-3.8.0-x64-setup.exe (le même existe pour 32 bits) de la page https://sourceforge.net/projects/sdcc/files/sdcc-win64/3.8.0/ et c'est ok chez moi:

Code : Tout sélectionner

C:\Program Files\SDCC\bin>sdcc --version
SDCC : mcs51/z80/z180/r2k/r3ka/gbz80/tlcs90/ds390/pic16/pic14/TININative/ds400/hc08/s08/stm8 3.8.0 #10562 (MINGW64)
published under GNU General Public License (GPL)

De plus, il y a plein de sources C issus de la GNU Libc comme toutes les manipulations des string :-D

Sinon @ j'ai pu ouvrir cette page mais j'ai échoué à télécharger ce compilateur ...
=> Certes, mais encore ?;-)

NB: Habituellement, je travaille sous Linux mais le portage sous Windows est opérationnel (l'inverse se saurait). De plus, les derniers PICs ne sont pas disponibles tout de suite mais pas gênant si on fait abstraction des caractéristiques matérielles de ces derniers et là, en général je repasse en assembleur avec la datasheet en guise de livre de chevet)

Appel de méthodes écrites en C depuis l'Assembleur
JJE
Passioné
Passioné
Messages : 399
Âge : 83
Enregistré en : novembre 2017
Localisation : Picardie

#9 Message par JJE » sam. 23 mars 2019 19:02

gagné, en fait, il s'était bien téléchargé mais si vite que je n'avais rien vu et dans un répertoire qu'il crée sans le dire, du coup j'en avais 5 ou 6 64 plus 2 32. Je ne sais même plus (déjà !) comment j'ai trouvé ce répertoire :cry:
Mais comme je faisais une recherche de sdcc* sur C: et qu'il était sur D:, je ne pouvais pas le voir.
Merci de ton aide
Cordialement

JJE

C'est pas parcequ'on n'a rien à dire qu'il faut fermer sa G....e

Appel de méthodes écrites en C depuis l'Assembleur
Claudius
Avatar de l’utilisateur
Passioné
Passioné
Messages : 260
Âge : 69
Enregistré en : septembre 2015
Localisation : ELANCOURT (78 - YVELINES)
Contact :

#10 Message par Claudius » sam. 23 mars 2019 19:32

Super, content pour toi 8-)


Retourner vers « Langage ASM »

Qui est en ligne

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