gpt4 book ai didi

x86 - 推送寄存器会清空该寄存器吗?

转载 作者:行者123 更新时间:2023-12-02 19:53:39 24 4
gpt4 key购买 nike

我已经阅读了很多这方面的书籍和说明,但从未指定的一件事是将寄存器压入堆栈后寄存器会发生什么。例如,如果您在汇编中编写“push ECX”,ECX 寄存器的内容将被压入堆栈(很明显)。我不知道的是,一旦你这样做了,ECX 寄存器是保留它在推送之前包含的值,还是在推送之后自行清空?

最佳答案

寄存器在push 指令后保持其值。

push 影响两个地方:获取新值的堆栈内存,以及现在指向新顶部的 esp 的值。您可以从 push 操作的描述中推断出:

if(StackAddressSize == 32) {
if(OperandSize == 32) {
ESP = ESP - 4;
SS:ESP = Source //push doubleword
}
else { //OperandSize == 16
ESP = ESP - 2;
SS:ESP = Source; //push word
}
}
else { //StackAddressSize == 16
if(OperandSize == 16) {
SP = SP - 2;
SS:ESP = Source //push word
}
else { //OperandSize == 32
SP = SP - 4;
SS:ESP = Source; //push doubleword
}
}

来源:https://c9x.me/x86/html/file_module_x86_id_269.html

https://c9x.me/x86/是一本很棒的 x86 指令袖珍引用书,随意使用!

关于x86 - 推送寄存器会清空该寄存器吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57559745/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com