Pushfd und Pushad: Was ist der Punkt?

Ich weiß, dass pushad drückt alle 32-bit-Register auf dem stack, sondern nur registrieren, dass die enden, die oben auf dem stack gespeichert werden, ist EDI. Flag-Werte sind nicht betroffen, also was ist der Punkt, der mit pushad? Außerdem weiß ich, dass pushfd drückt alle flag-Werte im double-format. Also, wenn flag-Werte sind in der Regel nur 0 oder 1 wie funktioniert die pushfd operation push einen Wert wie 00000A46 dem stack?

  • "die nur registrieren, dass die enden, die oben auf dem stack gespeichert werden, ist EDI" - Wie kam es zu dieser Schlussfolgerung?
  • Nicht sicher, wo Sie bekommen, dass. Sie verwenden pusha und pushf in 16-bit-code, pushad und pushfd in 32-bit-code. A46 hat 12 bit.
  • Diese Frage macht keinen Sinn. Die EDI-bit ist nicht wahr, bitte geben Sie eine Erklärung von tha Teil. Flags sind nicht betroffen, was? Was ist ein "double-format"? Sprechen Sie über flags oder EFLAGS-register? Auch sind wir in der 32-oder 16-bit-code? Etc.
  • EDI ist das Letzte register geladen, auf den Stapel und wenn Sie diese in x86-assembly an alle, es ist nur der Wert auf dem stack gespeichert werden.
  • Ihr Missverständnis rührt aus der Tatsache, dass pusha verringert esp zwischen jedem schreiben auf den stack, damit alle die geschoben Register am Ende auf unterschiedliche Adressen.
InformationsquelleAutor user1210446 | 2012-02-16
Schreibe einen Kommentar