堆栈操作,学习遇到的一个小问题

假如用软堆栈实现a×b+c÷d,运算结果给X
A为数据a的地址,类推
PUSH A
PUSH B
MUL 完成a×b
PUSH C
PUSH D
DIV 完成c÷d
ADD
POP X
那么它需要访存多少次?
完成a×b c÷d这两个步骤的结果需要送去内存存储吗?还是说放在寄存器里?

具体要看你用的什么机器,如果是x86,那么你的操作数如果是内存地址而不是寄存器的话,肯定就是“一次访问”。
当然,实际上也未必,因为cpu存在缓存和预读机制,结果就是性能开销没有你想象的大。

可能我没描述清楚,在x86的情况下,A是a的内存地址,a×b+c÷d 他的MUL和DIV的结果是否还要放进堆栈里,再取出来ADD.问题比较低级,是学习计算机组成原理的时候,有点不太懂。如果有双操作数,我能理解,取指,取操作数1,取操作数2,写入运算结果。有四次访存。

一次访问 没啥毛病 用gdb自己测一下