啥叫"调用子程序钱",你说的是调用其他函数吗?
每个函数都要自己保证栈平衡,自己push多少,返回之前pop多少。比如说汇编指令ret后面就可以跟个数字,ret 8就是pop出8个字节后返回。
钱字写错了,刚改了,应该是“前”。这么说:每个程序都应该保证在结束前把自己放到栈里的东西拿出来,如果是我们编写汇编程序调用push和pop指令,就要确保是成对的?否则算是运行时的错误。
调用子程序指的是执行call命令,对,应该是调用子函数
如果有人故意想捣乱,编写一段汇编语言,往栈里放了没用的东西,是不是能起到破坏作用
@会长: 程序?你这里的意思是指函数吗?
根据函数的声明方式,_stdcall 和_cdecl,他们清理栈的方式也不一样。某个是函数自己清理栈,某个是函数的调用者清理栈。
编译器会根据不同的函数声明方式不同,生成不同的代码。
push和pop不用配对,但是要保证ebp和esp的值平衡。
@嗷嗷: 是子函数,写错了。 多谢回答。
先去了解一下堆栈平衡吧。各种编译器实在的方式不同