Le passage des paramètres !

On peut difficilement être plus proche du cœur du CPU qu'avec l'assembleur...

Modérateur : Francois

Répondre
Artemus24
Raspinaute
Messages : 1077
Enregistré le : ven. 15 sept. 2017 19:15

Le passage des paramètres !

Message par Artemus24 » mer. 27 janv. 2021 08:47

Salut M. Vincent Leboulou.

Dans mon exercice suivant, je teste le passage des paramètres entre l'assembleur ARM au travers d'une fonction et d'une procédure, qui sont appelés en 'C' ou et en 'C++'.
J'ai donc fait le test du passage par valeur et du passage par adresse.

Ma question concerne le 'C++' et le passage par référence.
Hormis la syntaxe qui change pour le 'C' :

Code : Tout sélectionner

extern fadr(int*,int*,int*);
...
fadr(&x, &y, &z);
et la syntaxe pour le 'C++' :
extern "C" fadr(int&,int&,int&);
...
fadr(x, y, z);[/code]
Est-ce que le passage par référence en 'C++' est exactement la même chose que le passage par adresse en 'C' ?

Question subsidiaire : y-a-t-il d'autres passages de paramètres que par valeur ou par adresse ?

@+
RPI4B/8GB + Argon FanHAt
Rpi3A+, Rpi3B+
RPi 2B + Joy-It I2C Serial 20x4 2004 LCD Module
RPi 2B + PIM273 Unicorn HAT HD 16x16 Leds RGB
RPi0v1.3, RPi0W + LibreElec/Kodi, Rpi0WH + Tuner TV HAT
NodeMCU ESP32

destroyedlolo
Raspinaute
Messages : 1583
Enregistré le : dim. 10 mai 2015 18:44
Localisation : Dans la campagne à côté d'Annecy
Contact :

Re: Le passage des paramètres !

Message par destroyedlolo » mer. 27 janv. 2021 11:28

Salut

La différence se situe au niveau de la "présentation" qu'en fait C++ ... et la sécurité que ca apporte, a savoir qu'évidement, une référence est forcément valide vu que le pointeur correspondant ne peut être NULL.

Mais au niveau du code généré, c'est kif kif et bouricot : dans les 2 cas, c'est un pointeur sur l'objet qui est passé.

A+
  • BananaPI : Gentoo, disque SATA de 2 To
  • Domotique : 1-wire, TéléInfo, Tablette passée sous Gentoo, ESP8266
  • Multimedia par DNLA
  • Et pleins d'idées ... et bien sûr, pas assez de temps.
Un descriptif de ma domotique 100% fait maison.

Artemus24
Raspinaute
Messages : 1077
Enregistré le : ven. 15 sept. 2017 19:15

Re: Le passage des paramètres !

Message par Artemus24 » mer. 27 janv. 2021 12:09

Salut Destroydlolo.
Destroyedlolo a écrit :dans les 2 cas, c'est un pointeur sur l'objet qui est passé.
Je recherchais cette confirmation que le passage par référence en 'C++' est bien un passage par adresse (ou par pointeur).
Je l'ai testé en faisant une fonction et une procédure en assembleur, que j'appelle en 'C' et en 'C++'.

Hormis le passage par valeur et par adresse, n'existe-t-il pas d'autre façon d'effectuer le passage des paramètres ?

Merci pour ta réponse.
@+
RPI4B/8GB + Argon FanHAt
Rpi3A+, Rpi3B+
RPi 2B + Joy-It I2C Serial 20x4 2004 LCD Module
RPi 2B + PIM273 Unicorn HAT HD 16x16 Leds RGB
RPi0v1.3, RPi0W + LibreElec/Kodi, Rpi0WH + Tuner TV HAT
NodeMCU ESP32

VincentLeboulou
Messages : 35
Enregistré le : jeu. 19 oct. 2017 10:11

Re: Le passage des paramètres !

Message par VincentLeboulou » mer. 27 janv. 2021 14:50

Bonjour.
Ah ! je ne suis pas un spécialiste du C et du C++ . Par contre pour appeler des fonctions de librairies écrites en C depuis un programme assembleur il faut bien respecter la norme d'appel : à savoir passer les 4 premiers paramètres dans les registres r0 à r3 et s'il en existe d'autres il faut les passer par la pile (et dans l'ordre inverse en respectant l'alignement de la pile sur 8 octets). Vous trouverez des exemples sur mon blog dans le chapitre 10A ou lors de l'utilisation de la librairie X11.
Bon courage.

Artemus24
Raspinaute
Messages : 1077
Enregistré le : ven. 15 sept. 2017 19:15

Re: Le passage des paramètres !

Message par Artemus24 » mer. 27 janv. 2021 14:54

Salut M. Vincent Leboulou.

Non, c'est l'inverse. Je vais développer en assembleur des fonctions ou des procédures que je vais appeler en 'C' ou en 'C++'.
Je n'aurai pas besoin de plus de quatre paramètres car si j'ai besoin de plus, je vais utiliser une structure.
Je voulais savoir s'il existe autre chose que le passage des paramètres par valeur ou par adresse.

@+
RPI4B/8GB + Argon FanHAt
Rpi3A+, Rpi3B+
RPi 2B + Joy-It I2C Serial 20x4 2004 LCD Module
RPi 2B + PIM273 Unicorn HAT HD 16x16 Leds RGB
RPi0v1.3, RPi0W + LibreElec/Kodi, Rpi0WH + Tuner TV HAT
NodeMCU ESP32

destroyedlolo
Raspinaute
Messages : 1583
Enregistré le : dim. 10 mai 2015 18:44
Localisation : Dans la campagne à côté d'Annecy
Contact :

Re: Le passage des paramètres !

Message par destroyedlolo » mer. 27 janv. 2021 22:10

Hum, hormis passer la valeur d'un argument ou son adresse, je ne vois pas ce qui pourrait exister d'autre ...
Donc, je dirais que non ;)
  • BananaPI : Gentoo, disque SATA de 2 To
  • Domotique : 1-wire, TéléInfo, Tablette passée sous Gentoo, ESP8266
  • Multimedia par DNLA
  • Et pleins d'idées ... et bien sûr, pas assez de temps.
Un descriptif de ma domotique 100% fait maison.

Artemus24
Raspinaute
Messages : 1077
Enregistré le : ven. 15 sept. 2017 19:15

Re: Le passage des paramètres !

Message par Artemus24 » jeu. 28 janv. 2021 10:34

Salut Destroyedlolo.

J'avais un doute, car j'ai posé la même question sous developpez et j'ai eu la même réponse.

Merci !
@+
RPI4B/8GB + Argon FanHAt
Rpi3A+, Rpi3B+
RPi 2B + Joy-It I2C Serial 20x4 2004 LCD Module
RPi 2B + PIM273 Unicorn HAT HD 16x16 Leds RGB
RPi0v1.3, RPi0W + LibreElec/Kodi, Rpi0WH + Tuner TV HAT
NodeMCU ESP32

destroyedlolo
Raspinaute
Messages : 1583
Enregistré le : dim. 10 mai 2015 18:44
Localisation : Dans la campagne à côté d'Annecy
Contact :

Re: Le passage des paramètres !

Message par destroyedlolo » jeu. 28 janv. 2021 11:54

Oui, Developpez et Futura science sont mes références lorsque j'ai un problème ... meme si je n'ai malheureusement que peu (voir pas) de réponse car mes problèmes sont visiblement trop spécifiques ou trop bas niveau.
Par exemple pour faire une conversion de configuration par fichier fex vers un DTB :roll:
Pour pour ce qui est des questions de langages pures, se sont en effet de bonnes sources.
  • BananaPI : Gentoo, disque SATA de 2 To
  • Domotique : 1-wire, TéléInfo, Tablette passée sous Gentoo, ESP8266
  • Multimedia par DNLA
  • Et pleins d'idées ... et bien sûr, pas assez de temps.
Un descriptif de ma domotique 100% fait maison.

Répondre

Retourner vers « Assembleur »