堆栈大小为 32,-16(%ebp) 和 16(%esp) 会引用相同的四个字节吗?

With a stack size of 32, would -16(%ebp) and 16(%esp) reference the same four bytes?

堆栈大小为 32,-16(%ebp)16(%esp) 会引用相同的四个字节吗?假设我们只想一次读取或写入四个字节并且 esp 位于地址 0.

根据我的阅读,ebp read/write 的偏移量似乎从高地址到低地址,而 esp 的偏移量从低到高。因此,我的回答是不,它们不引用相同的四个字节。 -16(%ebp) 将引用字节 1620,而 16(%esp) 将引用字节 1216。这个假设是正确的还是我在这里完全错了?如果是正确的,为什么会存在这种差异?

如果"stack size of 32"表示%esp + 32 == %ebp,那么-16(%ebp)16(%esp)引用相同的地址,即%esp + 16。因此,它们指的是相同的字节、字或双字——对象总是从计算出的地址开始读取并向更高的地址移动(即使偏移量表达式为负)。因此,您将读取字节 %esp + 16%esp + 19.