2011-06-25 45 views

回答

2

理論上,SUB可以用任何方式定義(如@delnan所說)。

在實踐中,大多數基於堆棧的語言或指令集將按照Reverse Polish notation的約定:5 2 -3,並且可以在堆棧操作方面被認爲是push 5; push 2; subtract。所以,在你的例子中,X = A-B將是更典型的預期結果。

(一個真實的例子:isub在JVM)

0

所以,如果我必須證明A*(B-C)/D-E與堆棧操作,我這樣做的權利:

PUSH A 
PUSH B 
PUSH C 
SUB 
MUL 
PUSH D 
DIV 
PUSH E 
SUB 

然後,堆棧的頂部會有什麼A*(B-C)/D-E評估。實際上,這需要使用零地址格式寄存器來完成,我相信以這種方式使用堆棧就是這樣做的。

非常感謝您的幫助。

非常感謝。