【发布时间】:2012-01-31 07:51:30
【问题描述】:
如果我不初始化堆栈段,会发生什么?
在某些情况下会导致阅读错误吗?
【问题讨论】:
标签: x86-16 stack-memory bios memory-segmentation
如果我不初始化堆栈段,会发生什么?
在某些情况下会导致阅读错误吗?
【问题讨论】:
标签: x86-16 stack-memory bios memory-segmentation
当您调用软件中断(或进行任何调用)时,您的堆栈段寄存器最好有一个有效值,因为int(或call)指令需要一个有效堆栈来存储返回地址到你的代码。此外,被调用的子例程通常期望有一个有效的堆栈,它可以在其中push 一些寄存器来完成它的工作。
事实上,你的堆栈段寄存器最好始终有一个有效值,否则一旦第一个周期性中断发生,一切都会崩溃和烧毁。
【讨论】:
cli),然后再重新启用它们 (sti)。