出现了以下问题:必须确保 x64 程序的堆栈对齐。事情就应该如此。嗯,好的。对话者立即提出了一个选择:
start: push rax;
第二次还算顺利,没有任何问题。然后,后续与AI的沟通发现,再多做一点就好了:
start:
push rax; Выравниваем стек на 16 байт
; Ваш код
pop rax; Восстанавливаем значение rax (если нужно)
; Тут код завершение программы
随之而来的是,这有多么必要和重要pop rax
?据我所知,如果程序终止,内存无论如何都会被释放,对吗?但是有一个“但是”!!! “退出代码”如何正确工作?他到底需pop rax;
不需要这个“提前”?
请帮忙回答,或者至少提供建议!
是的,当程序退出的时候系统会释放资源。但由于您没有指定“您的代码”和“这是程序终止代码”的作用,因此无法确定。
如果你的程序退出代码只是:
那这自然就没有必要了。
如果您的终止代码使用堆栈指针,则它将取决于您的代码。
另一方面,如果您将来决定将程序重构为类似以下内容:
那么如果没有
pop rax
它,您就会遇到问题。所以我劝他还是放弃吧,以免以后给自己带来麻烦。是的,没有必要。但它只花费很少的时间就能完成。这只是一种很好的做法。