Logicielsmoto.com

Nous sommes le 28 Mar 2024, 19:39

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 4 messages ] 
Auteur Message
MessagePosté: 03 Juin 2022, 18:08 
Hors ligne

Inscription: 21 Fév 2020, 11:38
Messages: 366
Hello,

Désolé si la question est peit-être déjà apparue dans ce forum, ça peut paraitre une question idiote mais..

Pourquoi est ce que l'empilement (pshs) décroit les valeurs de régistres (U ou S) et le dépilement, (Pul) donc, l'accroit et pas l'inverse ? Est-ce un choix "judicieux" de la part de Motorola ?

Autre question : puisqu'une pile peut avoir bcp de "piles", il me semble que par défaut S pointe dans une adresse située au dela de $Exxx (sur TO) quelle est la limite de RAM (donc vers le bas) de cette pile ?

Enfin, dernière question, j'imagine quand même qu'il faille fixer une limite inférieure quant à l'adresse de Pile pour ne pas dépasser dans les zones "sensibles", quelle est ce nombre limite ? Pour mon jeu de démineur Xtreme par exemple, il faut au moins une marge de 150 jeux de données à conserver.


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 03 Juin 2022, 18:42 
Hors ligne

Inscription: 21 Avr 2019, 21:48
Messages: 433
Localisation: Var
Le fait d’empiler en sens inverse permet de ne pas avoir a fixer de taille limite pour la stack ou le code/données on optimise ainsi l’espace en ram et on vient a cours de mémoire qd la stack rencontre le code/données qui lui va dans l’autre sens.
La stack est positionnée en général en fin de ram sur la page residente donc en $9fff
Rien n’empêche de la resocialiser a d’autres endroit au runtime (ex lors d’un appel irq …)
La je parle d’une manière générale, pas dans le cadre du basic ou je ne sais pas comment ça fonctionne.
Je ne sais pas non plus ou elle est positionnée au boot. Il suffit de lancer le debugger dans dcmoto et de regarder ou est s.
Bref on peut mettre s ou on veut en ram. Évidemment pas en zone rom. Mais la ou ça a le plus de sens c’est le plus haut possible


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 03 Juin 2022, 21:44 
Hors ligne

Inscription: 21 Fév 2020, 11:38
Messages: 366
Bentoc a écrit:
Le fait d’empiler en sens inverse permet de ne pas avoir a fixer de taille limite pour la stack ou le code/données on optimise ainsi l’espace en ram et on vient a cours de mémoire qd la stack rencontre le code/données qui lui va dans l’autre sens.

Euh concrètement, ya rien qui pemet de dire que le code dans l'autre sens donne un signe "stop", la RAM étant remplie de n'importe quel octet, je pense qu'il faut quand même même une clause du genre

cmpu/cmps

quelque part non ?


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 04 Juin 2022, 12:50 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1802
Localisation: Brest
Certains langages et compilos tels que GNAT le compilo ADA de gnu peuvent vérifier le débordement de pile (source), mais comme la pile est un outil fréquemment utilisé, les exécutables produits sont plus lents. Note: ADA est totalement inspiré du Pascal et est hyper strict (il a été fait pour l'Armée). Il pourrait bien te plaire Bruno ;) (tuto).

Le fait que la pile décroit est une constante de tous les CPU depuis au moins les années 70. Les instructions étant lues dans le sens des adresses croissantes, on a placé très tôt dans l'histoire des ordinateurs l'organisation mémoire ainsi:
Image
afin d'optimiser l'utilisation de la mémoire.

En bas on retrouve classiquement les vecteurs d'interruption CPU, au dessus une zone TEXT qui contient le code et certaines constantes (chaines de caractères), puis les variables initialisées. Ensuite vient le BSS, une zone pour les variables initialisées à 0. Ensuite il y a une zone de mémoire "libre" appelée TAS. Les allocations dynamique ont lieu là dedans . Au sommet on trouve l'OS, en dessous la PILE qui croit par le bas. La Pile et le Tas occupent la même zone de mémoire libre dans l'espace d'adressage. L'un (le tas) croit par le haut, l'autre (la pile) par le bas.

Ainsi on évite de bloquer la croissance du tas parce qu'il rencontrerait le sommet d'une pile croissant aussi par le haut. Cette organisation laisse arbitrairement croitre la pile et le tas dans la zone de mémoire libre sans interférer l'une avec l'autre tant qu'il reste de la mémoire libre au milieu des deux.

_________________
Good morning, that's a nice Tnetennba


Haut
 Profil  
Répondre en citant le message  
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 4 messages ] 

Heures au format UTC + 1 heure


Qui est en ligne

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


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages
Vous ne pouvez pas joindre des fichiers

Rechercher:
Aller à:  
cron
Développé par phpBB® Forum Software © phpBB Group
Traduction par phpBB-fr.com