|
主题 : : 关于中断程序中的栈 [待解决] |
回复[ 8次 ]
点击[ 730次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2008-05-06 12:43 ]
[引用]
[回复]
[ top ] | |
荣誉值:2
信誉值:2
注册日期:2008-04-22 20:01 |
编写一个中断程序要将用到的寄存器入栈,一个程序调用这个中断时,如果程序中没有开辟栈空间,那么中断程序中的栈是哪里来的呢? | | |
|
|
|
|
[第1楼]
[ 回复时间:2008-05-06 19:57 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2008-03-14 16:22 |
我支持楼主!这个问题我也问过好多人,没人回答过我!高手来讲下子啊 | | |
|
|
|
|
[第2楼]
[ 回复时间:2008-05-06 23:33 ]
[引用]
[回复]
[ top ] | |
荣誉值:44
信誉值:0
注册日期:2008-04-11 13:33 |
操作系统也是一个程序,是一个装载程序,它自己也有栈,当在它上面运行的程序没有自己设置栈时,就会默认使用系统提供的栈。 | | |
|
|
|
|
[第3楼]
[ 回复时间:2008-06-03 08:54 ]
[引用]
[回复]
[ top ] | |
荣誉值:9
信誉值:0
注册日期:2008-04-12 14:46 |
|
|
|
|
|
[第4楼]
[ 回复时间:2009-01-11 14:00 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2008-09-29 21:55 |
|
|
|
|
|
[第5楼]
[ 回复时间:2010-02-05 17:10 ]
[引用]
[回复]
[ top ] | |
荣誉值:4
信誉值:6
注册日期:2010-01-07 10:37 |
如果程序中没有定义栈,系统会自动分配的,在windows系统下是不会出现错误的,但是在其他系统里面,比如单片机编程时,如果不事先定义,就可能会侵占到其他有用空间,造成数据的丢失! | | |
|
|
|
|
[第6楼]
[ 回复时间:2012-03-11 17:01 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2012-03-09 14:40 |
我们写的程序都是在os的管理下运行的,当我们没有定义栈的时候 ,操作系统会自动给我们分配栈空。如果没有操作系统的话,像单片机,dsp之类的裸机,没有定义栈,程序是会出问题的,可能跑飞了,也可能运行不了。 | | |
|
|
|
|
[第7楼]
[ 回复时间:2012-10-07 19:05 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2011-03-20 21:27 |
|
|
|
|
|
[第8楼]
[ 回复时间:2013-01-17 22:13 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2012-12-14 17:39 |
cs段就是系统栈,初始化sp=0,入栈后,sp-2 到达cs段的末尾 ,这就是系统分配的栈吧 | | |