Stack
-
Hallo
Kann mir bitte jemand den Unterschied zwischen einem Software und einem Hardware Stack erklären?
mfg
-
hardwarestack nennt man das, was mit den prozessorbefehlen push und so angesprochen wird. softwarestack hingegen ist was ganz selber programmiertes wie std::stack.
-
-
Irgendwie habe ich nicht ganz verstanden was dieses std::stack bedeutet oder wo die Unterschiede genau liegen kann mir das vll nochmal jemand erklären bitte ?
-
Lies den Link auf Wikipedia, dann verstehst du, was man mit einem Software Stack machen kann.
Und dann schaust du hier, wie man das mit std::stack macht.
http://www.cplusplus.com/reference/stl/stack/
-
Man nennt es einfach Hardware-Stack, wenn die CPU selbst einen eigenen Stack-Pointer hat, und diesen Stack bei bestimmten Operationen auch verwendet.
Nicht nur Befehle wie "push" und "pop" verwenden diesen Stack ("push" und "pop" könnte man ja ganz einfach selbst implementieren, also wenn es diese Befehle nicht gäbe -- manche CPUs haben auch garkeine speziellen "push" und "pop" Befehle, wie z.B. die 68k Serie), sondern auch z.B. Befehle wie "call" und "ret" verwenden diesen Stack, um abzuspeichern "woher" eine Funktion aufgerufen wurde, bzw. diese Adresse wieder vom Stack zu nehmen, und zurückzuspringen.
Grundsätzlicher Unterschied besteht IMO aber keiner - ein Stack ist und bleibt ein Stack. Der eine ist eben mit direktem "CPU Support" implementiert, der andere nicht.