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

Assembleur Discussion :

Gestion de la mémoire en Assembleur, octet ?


Sujet :

Assembleur

  1. #1
    Invité1
    Invité(e)
    Par défaut Gestion de la mémoire en Assembleur, octet ?
    Je ne connais absolument rien en assembleur . . .

    En apprenant le c, je me suis rendu compte que la mémoire est gérée automatiquement (je veut dire, l'endroit dans la mémoire ou est stockée la variable) . .

    En assembleur, j'imagine qu'il faut faire cela manuellement non??

    Si c'est le cas, comment faire pour ne pas utiliser un espace déjà utilisé par une autre application??

    . . .

    Aussi . . . J'avais une question stupide . . . Un octet, c'est 8 bits . . . Pourquoi c'est 8 bits Pourquoi pas autre chose

    Merci beaucoup

    Alex

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 373
    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 373
    Points : 23 629
    Points
    23 629
    Par défaut
    Citation Envoyé par Alexandreg12 Voir le message
    En apprenant le c, je me suis rendu compte que la mémoire est gérée automatiquement (je veut dire, l'endroit dans la mémoire ou est stockée la variable) En assembleur, j'imagine qu'il faut faire cela manuellement non??
    Soit tu utilises la pile (cas des variables locales, notamment) et dans ce cas, par conception, c'est automatique pourvu que tu aies initialisé correctement ton segment.

    Si c'est le cas, comment faire pour ne pas utiliser un espace déjà utilisé par une autre application??
    Soit tu es tout seul et tu fais ta vie, soit tu ne l'es pas et tu demandes au système de t'en réserver. Autrement dit, tu appelles malloc en assembleur comme tu le ferais en C pour qu'une routine tierce te dise où te peux te mettre :-)

    D'une manière générale, malloc(), vis-à-vis de la RAM, ne correspond à aucun prérequis technique. C'est juste qu'il faut qu'il y ait une autorité qui tienne le compte de tout ça, et qui soit la même pour tous les programmes. Ça se complexifie un peu avec le swap, bien sûr.

    Pour étendre cela encore plus loin, avant l'apparition du mode protégé dans les processeurs, tout ceci était purement consultatif : un programme DOS, par exemple, réclamait de la mémoire au système mais rien ne l'empêchait d'aller écrire ailleurs si bon lui semblait. Ça veut dire aussi que les segfaults n'existaient pas. Si un étudiant faisait une connerie avec un pointeur, ça corrompait le système entier et, souvent le disque avec (loi de Murphy). Ça n'a pas empêché l'informatique de se développer. À l'époque, on faisait attention. Mais il faut dire aussi que les machines personnelles étaient souvent monotâches.

    Aussi . . . J'avais une question stupide . . . Un octet, c'est 8 bits . . . Pourquoi c'est 8 bits Pourquoi pas autre chose Alex
    Parce que sinon, ce ne serait pas octet ! :-)

    En fait, la taille des mots manipulés par un processeur est très variable. Les premières familles utilisaient des longueurs bâtardes comme 6, 7 ou 9 bits. Huit bits se sont rapidement imposés car 8 est une puissance de deux (en plus d'être un multiple) et que le nombre de combinaisons est suffisamment important pour que l'on puisse faire quelque chose avec, sans pour autant nécessiter une parallélisation massive au niveau électronique ! À l'époque, les techniques de gravures n'étaient pas ce qu'elles étaient et faire circuler un bus de huit bits sur une carte-mère, c'était autre chose qu'un bus de 64.

    L'octet est devenu l'unité de référence parce que la plus pratique à manipuler, mais les processeurs modernes 32 bits, par exemple, exploitent en coulisses des mots de 32 bits, d'où l'importance de l'alignement de certaines instructions sur une adresse multiple de 4.

    Certains microcontrôleurs ou µP spécialisés, par exemple les PIC12xxxx, utilisent directement des mots de 12 bits visibles par le programmeur.

  3. #3
    Membre confirmé Avatar de dapounet
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2007
    Messages
    469
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2007
    Messages : 469
    Points : 567
    Points
    567
    Par défaut
    Citation Envoyé par Alexandreg12 Voir le message
    En apprenant le c, je me suis rendu compte que la mémoire est gérée automatiquement (je veut dire, l'endroit dans la mémoire ou est stockée la variable) . .

    En assembleur, j'imagine qu'il faut faire cela manuellement non??
    Non, c'est le boulot de l'OS. Le programme qui assemble le code source génère quand même les adresses des variables globales lui-mêmes, celles des variables locales sont calculées à l'exécution. Au final le programme utilisera des adresses "virtuelles" et c'est l'OS qui se chargera de les faire correspondre avec une varie adresse physique.

    Citation Envoyé par Alexandreg12 Voir le message
    Si c'est le cas, comment faire pour ne pas utiliser un espace déjà utilisé par une autre application??
    C'est le boulot de l'OS aussi. Chaque programme a un espace d'adressage virtuel séparé des autres et l'OS s'occupe de faire la correspondance avec la mémoire et le swap de la machine.
    :wq

Discussions similaires

  1. Réponses: 17
    Dernier message: 02/02/2006, 12h03
  2. gestion de la mémoire
    Par moldavi dans le forum C++
    Réponses: 17
    Dernier message: 04/02/2005, 23h18
  3. Réponses: 11
    Dernier message: 26/12/2004, 22h50
  4. Gestion de la mémoire entre plusieurs DLL
    Par Laurent Gomila dans le forum C++
    Réponses: 7
    Dernier message: 27/07/2004, 15h28
  5. Gestion des variables - mémoire ?
    Par RIVOLLET dans le forum Langage
    Réponses: 4
    Dernier message: 26/10/2002, 12h44

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