Befehlssatzarchitektur Stack

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

Befehlssatzarchitektur Stack
Hi,

kann folgender Code die Befehlssatzarchitektur Stack sein?
Push A
add B
Pop C //ergebnis von A+B

B ist hier wohl ein Wert vom RAM oder?

Kann beim Stack bei einer Arithmetischen Operation ein Operand stehen? 0 Operanden sind ja sicher erlaubt.

Vielen Dank
froschigon


Das ist meiner Meinung nach kein Beispiel für die Stack-Befehlsarchitektur.
Bei dieser haben nämlich arithmetische Operatoren keinen (!) Operanden (und es sind keine Register adressierbar).

Ein Beispiel wäre:

push A
push B
add
pop C

Mit ‘push A’ und ‘push B’ schiebe ich also die “Operanden” auf den Stack, ‘add’ schnappt sich dann einfach die obersten beiden Elemente und legt das Ergebnis wiederum auf den Stack.
Somit muss ich mir das Ergebnis nur noch vom Stack holen.

Dein Code-Schnipsel sieht mir eher wie ein Akkumulator aus (ein expliziter Operand, keine Register). Diese arbeiten allerdings mit load/store.

load A
add B
store C

Danke sehr! :slight_smile: