IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Autres architectures Assembleur Discussion :

[6502] Pile logicielle de paramètres ou pas?


Sujet :

Autres architectures Assembleur

  1. #1
    Membre expérimenté
    Profil pro
    Développeur en systèmes embarqués retraité
    Inscrit en
    Mars 2006
    Messages
    946
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2006
    Messages : 946
    Points : 1 351
    Points
    1 351
    Par défaut [6502] Pile logicielle de paramètres ou pas?
    Hello,

    Il existe pour le 6502 quelques assembleurs plus que corrects mais... Qui ne restent que des assembleurs. Le C étant mon job de tous les jours et l'assembleur 6502 un hobby depuis plus de 30 ans, je trouve qu'il manque à l'assembleur la gestion des segments et un équivalent des fonctions avec paramètres... Ce qui le rendrait presque agréable. Le seul compilateur C encore utilisé aujourd'hui est CC65 de Ulrich Von Bassovitch... Que tout le petit monde du rétro-computing 6502 a essayé... Puis abandonné. C'est un vrai C, mais d'une lenteur probablement due au très petit nombre de registres, le seul 16 bits étant pc, le program counter.

    J'ai donc commencé à écrire en python un pré-assembleur qui comprend quelques mot-clefs supplémentaires et qui réorganise le code: .include .segment

    Avec une simple définitions de segments, quelle que soit la cible 6502 (Atari, Apple, Commodore, Oric etc...) on peut choisir de créer un exécutable sous forme de fichier disque, de cartouche etc... Autre avantage, on peut créer des sources réutilisables dans le sens où les variables sont dispatchées une fois pour toutes dans un source unique. par exemple une fonction memcpy serait un source "memcpy.asm" ajouté au source principal par .include, les variables dest src et size étant ajoutées dans le segment zdata et le code... Dans le segment code. Le pré-assembleur concatène les différents fichiers sources puis trie les différents bouts de segments pour faire un code pré-compilé. Ceci est déjà fait et fonctionne très bien.

    Voici maintenant le sujet de ce post, les fonctions et leurs paramètres. je pense rajouter 3 mot-clefs supplémentaires au pré-assembleur: .function, .endfunc et .call

    J'ai créé une pile logicielle pour les paramètres, mais c'est en dehors de la page zéro pour des raisons évidentes, ça crée quand même pas mal de code d'encapsulation et pour finir ça prend du temps.

    J'ai entendu parler d'une autres méthode courante (en tout cas en C), c'est de créer des variables statiques pour chaque fonction. Elles seraient dans le segment data (non initialisé), beaucoup plus rapides d'accès, mais on perd la récursivité... Quelqu'un aurait une expérience ou un ressenti sur une de ces méthodes?

    A+

    Pfeuh

  2. #2
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 214
    Points : 10 140
    Points
    10 140
    Par défaut
    Bon courage pour ton projet
    L'assembleur de la famille 6500 est vraiment sympa je trouve , pour ta question pour ma part on m'as conseillé de mettre des variable dans un adresse statique qui sert argument pour les fonctions et personnellement ça marche plutôt bien , un lda $4400 par exemple ne prend que 4 cycle , mais je pense que faut pas trop 'abusé' ça reste plus 'long' que sans utiliser de paramètre.
    Ensuite j'utilise souvent les Macros (dont je met quelque registre en paramètre).

    Après je ne suis (malheureusement) pas spécialiste en assembleur.

  3. #3
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 370
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 370
    Points : 23 625
    Points
    23 625
    Par défaut
    Pour avoir très longuement bossé sur 6809 (presque pareil) sur mon Thomson, je confirme que le « moniteur » (i.e. le BIOS) et le BASIC embarqué utilisait toute une plage de variables statiques à adresse fixe. Probablement parce que tout était directement écrit en assembleur (ce qui se voit au code) et parce que ces variables devaient être définies en tant qu'EQUates dans la plus pure lignée de l'assembleur. Effectivement, utiliser massivement la pile pour passer des paramètres induit pas mal de latence sur des machines de cette époque. Ça nécessite en plus d'avoir une pile proprement gérée. Comme il n'y avait pas de mode protégé à l'époque et qu'on utilisait beaucoup la mémoire paginée, ça devenait compliqué.

  4. #4
    Membre expérimenté
    Profil pro
    Développeur en systèmes embarqués retraité
    Inscrit en
    Mars 2006
    Messages
    946
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2006
    Messages : 946
    Points : 1 351
    Points
    1 351
    Par défaut
    Bon, et bien merci pour ces réponses qui me confirment le choix des variables statiques.

    A+

    Pfeuh

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Pile de carte mère] Morte ? Pas morte ?
    Par Geache dans le forum Composants
    Réponses: 19
    Dernier message: 24/02/2015, 17h18
  2. Logiciel pour lancer d'autres logiciels avec paramètres
    Par Fab88 dans le forum Autres Logiciels
    Réponses: 5
    Dernier message: 01/04/2009, 14h15
  3. Réponses: 3
    Dernier message: 12/12/2008, 08h05
  4. Réponses: 2
    Dernier message: 12/12/2007, 18h59
  5. Comment les BIOS sans piles retenaient les paramètres
    Par beegees dans le forum Composants
    Réponses: 27
    Dernier message: 20/03/2007, 21h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo