未定义堆栈程序集的堆栈指针寄存器值

问题描述

在Assembly程序中未定义堆栈时,堆栈指针寄存器SP指向什么(它包含什么值)?

我们的(印刷不好的)教科书说:“ SP寄存器包含了堆的最后一个字节的地址,如果没有定义的话,则返回值0,这意味着该段的最后一个字节( 2 ^ 16),知道SP寄存器上的运算将减2,这使我们用十六进制的-2 = 0FFFE作为地址(无符号值)”

但是,我认为该段应该说:“ SP寄存器包含堆的最后一个字节的地址(如果已定义),如果不是,则返回值0,知道SP上的操作寄存器要减2,这使我们用十六进制的-2 = 0FFFE作为地址(无符号值),这意味着段的最后一个字节(2 ^ 16)

我对此和SP总体上有一些疑问:

  • 为什么他们减少SP,为什么不只是将其保留为0?
  • 为什么它们精确地减小 2
  • 该段的最后一个字节不是0FFF F 而不是0FFF E 吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)