nochmal kurz stack



  • Hallo,

    geh ich richtig in der Annahme, dass push/pop ein byte "verschenken"... Also ich stell mir das so vor: push zieht ja bevor es etwas in den stack schreibt 0x02 vom sp ab, damit es platz zum reinschreiben hat.Das müsste dann intern eigentlich so oder so ähnlich aussehen (pseudo asm):

    sub sp,0x02
    mov [ss:sp],word

    Gesetzt den Fall, dass sp=0x02 entsprechend so:

    sub sp=0x02,0x02 ;also sp=0x00
    mov [ss:0x00],word

    heißt also: ab adresse ss:0x0000 wird ein wort geschrieben und zwar so, dass 0x0000 das erste byte enthält und 0x0001 das zweite... Kombiniere, kombiniere: offset 0x0002 bleibt ungenutzt...

    Stimmt das so oder irr ich mich?

    CU



  • Jap, stimmt so, deswegen kann man den Stack immer auf ne schöne gerade Adresse setzen, auch wenn die Adresse selber ansich garnicht mehr zugreifbar ist (ich setze z.B. meinen Stack auf 0xf0000000, auch wenn diese Adresse nicht existiert, sondern nur bis 0xefffffff). Dasselbe gilt natürlich in 16-bit-umgebungen.



  • Dankeschön!


Anmelden zum Antworten