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é: 4 314 / 306

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

 

Fichier Zip

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

Historique

04 décembre 2006 14:56:27 :
Simplification du code Affichage plus complet de l'état mémoire Commentaires plus précis

Commentaires et avis

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 dans le forum

La gestion de la pile dans masm32 [ par ToutEnMasm ] Par défaut la pile d'un programme masm32 est fixé a 4096 octets soit une page.je sais comment modifier cette taille au link mais je ne sais pas commen Scolling Text masm32 [ par Bros ] HelloJ'aimerais bien faire un scrolling text de bas en haut en masm32 (un peu comme dans le about de emule)Quelqu'un aurait-il une idée de comment pro segment partagé en masm32 [ par anthraxx ] bonjour a tous,je connais l'assembleur mais je suis pas tres habitué a masm32, et je me demandais ce qu'il faut mettre pour qu'un segment donné de ma MASM32 et Performances ???? [ par gor00 ] Salut à tous, Je me posé une question à propos des programmes en assembleur réalisés à l'aide de MASM32. Cet outil propose plusieurs fonctions et libr Différence entre stack et heap [ par Stormy ] salut à tous,Quelqu'un aurait-il la gentillesse de m'expliquer la différence entre la pile (stack) et le tas (heap). Je sais que le tas alloue une mém MASM32 et EDITASM ??? [ par DeAtHCrAsH ] Salut,Je viens de faire un tour sur le site de ToutEnAsm et j'ai dl masm32.Maintenant j'aimerai apprendre le MASM mais je n'ai trouvé aucun bien struc CommandLine - Difficulté de compilation [ par juki_webmaster ] Bonjour à tous,Je vien de télécharger MASM32 (masm32g_13) sur telecharger.com.Je vien de le lancer et d'ouvrir un fichier asm, j'usqu'à la tout va bie pourquoi masm32 [ par kiki127 ] quel est l'interet d'utiliser masm32, plutot que de compiler avec masm.exe ?existe t'il des cours ou des conseils pour utiliser au mieux masm32.merci Stack [ par AlexMAN ] Bonsoir, Je me pose une kestion :Si au debut d'une fonction, je fais : lea edx, [esp - 32]mov esp, edxcall CreateRectRgnOn est d'accord, la pile est r Programme console avec Masm32 [ par LordBob ] Bonjour a tous,voila je me lance dans la programmation assembleur... et j'aimerais si avec masm32, il était possible de créer des programmes consoles


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

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

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,718 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.