2009-09-10 5 views

Répondre

7

Ils auront n'importe quelle valeur était dans cette mémoire avant, qui est peu probable d'être 0. Ce n'est pas «aléatoire» en soi - en effet, c'est probablement prévisible; cela ne sont généralement pas tout bon, mais juste ne reçoivent pas des idées intelligentes sur l'utilisation pour un RNG :)

Rappelez-vous, tout ce que vous avez fait dans ce code est:

  • Enregistrer la valeur actuelle de RASE à [ESP] puis soustraire 4 de ESP
  • Copie ESP ebp
  • soustraire 8 de RASE (avez-vous dire ESP?)

La CPU ne lirai pas tout dans ce au-delà, à moins que vous le disiez. C'est l'essence de l'assembleur. De plus, lorsqu'il est utilisé en arithmétique normale, l'ESP n'est pas du tout spécial - c'est juste un nombre.

+0

Merci d'avoir repéré ce sous ebp, 8. Je pensais vraiment que c'était avec ebp: S. Je suis en train de lire l'introduction de Barlet à la procédure 80x86 Assemblage Language and Computer Architecture et le chapitre de la pile pour que je puisse enfin comprendre le fonctionnement de la pile. –

2

Ils auront des valeurs aléatoires.

+0

Eh? Pourquoi la downvote? Il répond à la question et n'a pas tort. –

5

Vous ne devriez jamais dépendre de cela car cela pourrait dépendre de l'implémentation. Pour être dans un état prévisible, toujours init un registre ou une cellule de mémoire avec une certaine valeur.

3

Ils auront certainement des valeurs aléatoires sauf si vous les initialisez explicitement.

+0

Raison critique: tout ce que vous faites est de déplacer un pointeur. Rien de ce que vous faites ne les amènerait à être mis à zéro. –

Questions connexes