begin process at 2008 09 06 09:30:46
1 237 663 membres
60 nouveaux aujourd'hui
14 313 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

ALLOCATION DYNAMIQUE DE MEMOIRE POUR LA PILE DANS MASM


Information sur la source

Catégorie :Tutoriels Classé sous : memoire, virtualalloc, pile, stack, masm32 Niveau : Débutant Date de création : 09/04/2004 Date de mise à jour : 04/12/2006 14:56:25 Vu / téléchargé: 3 878 / 286

Note :
10 / 10 - par 1 personne
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (5)
Ajouter un commentaire et/ou une note

Description

Le sujet manquant dans a peu près tous les sites et pourtant ,l'allocation dynamique de mémoire pour la pile d'un exécutable présente les avantages suivants.
Nul besoin de modifier les options de link pour gérer la pile
Sécurité renforcé du programme puisque la pile ne peut plus débordé et est étroitement surveillé par le système.
Souplesse dans les modifications et possibilité d'économiser la mémoire.
Le programme mem est un tutorial bati pour vous permettre de le modifier et de le suivre
Deux choses importantes
align 4 pour la structure MEMORY_BASIC_INFORMATION
Le pointeur de pile est initialisé en fin de tampon mémoire.Ceci oblige
a descendre les pages une a une pout trouver la taille de la région avec
VirtualQuery.La fonction cherche les pages de même nature en incrémentant
les adresses.Pour retrouver la région de la pile , il faut décrémenter les
adresses.
Modifications:
Un affichage complet de l'état de la mèmoire
toutes les manipulations sont sans risque.

                           ToutEnMasm
Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  •   mem
    • ajour.batTélécharger ce fichier [Réservé aux membres club]Voir ce fichier112 octets
    • data.incTélécharger ce fichier [Réservé aux membres club]2 007 octets
    • declare.incTélécharger ce fichier [Réservé aux membres club]3 470 octets
    • except.incTélécharger ce fichier [Réservé aux membres club]17 491 octets
    • MAINICON.ICOTélécharger ce fichier [Réservé aux membres club]Voir ce fichier766 octets
    • MAKEIT.BATTélécharger ce fichier [Réservé aux membres club]Voir ce fichier625 octets
    • mem.asmTélécharger ce fichier [Réservé aux membres club]Voir ce fichier15 531 octets
    • mem.binTélécharger ce fichier [Réservé aux membres club]1 564 octets
    • mem.exeTélécharger ce fichier [Réservé aux membres club]18 735 octets
    • mem.rcTélécharger ce fichier [Réservé aux membres club]Voir ce fichier350 octets
    • mem.RESTélécharger ce fichier [Réservé aux membres club]1 040 octets
    • winmain.incTélécharger ce fichier [Réservé aux membres club]6 903 octets
    • wndproc.incTélécharger ce fichier [Réservé aux membres club]3 537 octets

Télécharger le zip

04 décembre 2006 14:56:27 :
Simplification du code Affichage plus complet de l'état mémoire Commentaires plus précis
  • signaler à un administrateur
    Commentaire de theXman le 12/04/2004 10:04:24

    Bravo et merci à toi

    je jetterai un oeuil kand le temps m'en laissera le temps...

  • signaler à un administrateur
    Commentaire de patatalo le 28/04/2004 19:00:42 administrateur CS

    salut,

    l'allocation dynamique ca se fait pas dans le heap ?
    y'a pas déjà une fonction pour ca ?
    invoke GlobalAlloc,GPTR,cbBloc ?
    and     eax,eax
    je        badalloc

    la pile, c'est pas pour les variables locales ?

    @++

  • signaler à un administrateur
    Commentaire de ToutEnMasm le 16/05/2004 20:43:32

                       Salut,
    L'allocation dynamique pour la pile doit gérer de la mémoire paginée.La seule fonction mémoire capable de faire ça est virtualalloc qui travaille en adressage linéaire.
    la pile sert effectivement pour les variables locales mais aussi pour les variables passées en paramètres.C'est elle qui contient les adresses de retour pour les proc,c'est elle enfin qui permet de faire du debuggage post-mortem par recherche dans son contenu.
    Sa grosse faiblesse est qu'en cas de fautes il est extrèmement difficile de ratrapper le programme fautif.
                      TouEnMasm

  • signaler à un administrateur
    Commentaire de patatalo le 21/05/2004 10:02:34 administrateur CS

    salut,

    toute la mémoire du process est mappé en passant par la mémoire paginée que ce soit du code, des données, la pile, le heap, ...

    la gestion du heap fait exactement ca, il réserve un bloc de mémoire  avec VirtualAlloc, dans ce bloc réservé, une partie est allouée ( comit permet d'associer les blocs de memoire physique au reservations virtuelles ), si tu a besoin, le heap commit s'agrandi et sinon, on libère la memoire physique ( la memoire virtuelle restant réservée ).

    ce que je ne comprends pas , c pourquoi le faire dans la pile alors que ca doit se faire dans le heap ?

    @++

  • signaler à un administrateur
    Commentaire de BABASSE le 19/07/2007 17:15:53

    Salut,
    Je me rappel que sur Atari (devpac) je définissais la taille de la pile dans le source et je me demandais bien comment cela se présentait sur pc. Ben voilà une réponse plus+ que complète, mais je dois avoué qu'il va me falloir un peu de temps pour digérer. En tout cas chapeau, je ne sais pas ou vous trouvez les infos pour faire un truc pareil mais sa mérite un 10.
    @+

Ajouter un commentaire

Discussions en rapport avec ce code source

Pub



Appels d'offres

Snippets en rapport

CalendriCode

Septembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
2930     

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS