最近在论坛看到两三个对于堆栈的疑问,也引发了我自己来探索的兴趣,本来我知道T命令调试是使用了单步中断来实现的,也就是引起了程序自陷来中断正在执行的程序,估计通过类似技术具体实现了这一过程吧。
某篇帖子提到堆栈的分配会多分配5个字的单元,为什么呢?我也非常好奇,所以就对这个问题进行了实例分析,在T命令后,对堆栈的内容进行查看。一般,堆栈中存放的多是各个寄存器的值以保持程序环境,通过R指令的调试,知道了T命令的具体压栈流程
PUSHF
PUSH CS
PUSH IP
PUSH BP
PUSH AX
对于前面三个指令,很明显就是调用中断的压栈操作,对于后面两个,我只知道了压栈的寄存器是什么,大概的原因是在T命令中会使用AX和BP,只是具体这两个寄存器在命令中起到的作用,实在无法了解,我还不太懂得这方面的问题,如果哪位高手明白的话,可以讲述下吗?