push ebp+---------+
+ 参数M +
+ --------+
+ return +
+---------+<-----ebp
+old ebp +
+ +
+++++++ <-----esp
+ +
+ +
+---------+move ebp esp
+---------+
+ 参数M +
+ --------+<---ebp+8
+ return +
+---------+<---ebp+4
+old ebp +
+ +
+++++++ <----ebp = esp
+ +
+ +
+---------+我的理解应该是这样吧,为啥看有的书里面总是下面这样的呢?
+---------+
+ 参数M +
+ --------+<-----ebp+4是参数M
+ return +
+---------+<-----ebp指向return address
+old ebp +
+ +
+++++++
+ +
+ +
+---------+
+ 参数M +
+ --------+
+ return +
+---------+<-----ebp
+old ebp +
+ +
+++++++ <-----esp
+ +
+ +
+---------+move ebp esp
+---------+
+ 参数M +
+ --------+<---ebp+8
+ return +
+---------+<---ebp+4
+old ebp +
+ +
+++++++ <----ebp = esp
+ +
+ +
+---------+我的理解应该是这样吧,为啥看有的书里面总是下面这样的呢?
+---------+
+ 参数M +
+ --------+<-----ebp+4是参数M
+ return +
+---------+<-----ebp指向return address
+old ebp +
+ +
+++++++
+ +
+ +
+---------+
+ 参数M +
+ --------+
+ return +
+---------+<-----ebp
+old ebp +
+ +
+++++++ <-----esp
+ +
+ +
+---------+move ebp esp
+---------+
+ 参数M +
+ --------+<---ebp+8
+ return +
+---------+<---ebp+4
+old ebp +
+ +
+++++++ <----ebp = esp
+ +
+ +
+---------+push eax
+---------+
+ 参数M +
+ --------+<---ebp+8
+ return +
+---------+<---ebp+4
+old ebp +
+++++++ <----ebp
+ eax +
+++++++<--- esp
+ +
+ +
+ +
+---------+
出栈:先把数据复制出来,然后 + 4