. : : Assembly Language : : .
|
首页
|
我提出的问题
|
我参与的问题
|
我的收藏
|
消息中心
|
游客 登录
|
刷新
|
提问
|
未解决
|
已解决
|
精华区
|
搜索
|
《汇编语言》论坛
->
寄存器(内存访问)
管理员:
assembly
[
回复本贴
]
[
收藏本贴
] [
管理本贴
] [
关闭窗口
]
主题 : :
关于栈段,数据段,代码段在同一个地址的疑问
[待解决]
回复[
4
次 ] 点击[
381
次 ]
wu136626
[帖 主]
[ 发表时间:2009-08-22 21:49 ]
[
引用
]
[
回复
]
[
top
]
荣誉值:0
信誉值:0
注册日期:2009-08-22 07:47
如果栈段 数据段 代码段在同一个地址重叠了
执行代码的时候 是不是会发生不可意料的情况 比如
代码段从 1000:0开始 栈段 ss=1000 sp=4
代码1000:0 push ax
那么在ax写入10002-10003的同时 会改变了代码段
我试过了 debug会发生错误退出 我不知道如果指令已经行使了 那么代码改变应该不会有问题的啊?为什么会发生错误
所以在设置这几个段的时候 是不是应该尽量不要重叠
使内存地址各行使自己的作用 还是利用重叠的段达到特殊的目的?
高级语言在使用的时候 定义一个函数是不是会自动分配一个段??
tinyparticle
[第
1
楼]
[ 回复时间:2009-08-24 20:53 ]
[
引用
]
[
回复
]
[
top
]
荣誉值:188
信誉值:4
注册日期:2009-07-05 19:26
我不知道如果指令已经行使了 那么代码改变应该不会有问题的啊?为什么会发生错误
*********************************************
理论上指令行使后,覆盖数据不会有问题,发生错误可能是写入的数据更改了未执行的指令,倒至后续指令无法执行,或执行错误指令
所以在设置这几个段的时候 是不是应该尽量不要重叠
*********************************************
没错,尽量不要重叠,也方便自己跟踪查找数据和问题
使内存地址各行使自己的作用 还是利用重叠的段达到特殊的目的?
*********************************************
个人经验发现栈段和数据段部份重叠使用可以达到特殊作用
高级语言在使用的时候 定义一个函数是不是会自动分配一个段??
*********************************************
只学习了汇编,目前还没学完,对高级语言一窍不通:(
wu136626
[第
2
楼]
[ 回复时间:2009-08-24 23:50 ]
[
引用
]
[
回复
]
[
top
]
荣誉值:0
信誉值:0
注册日期:2009-08-22 07:47
使内存地址各行使自己的作用 还是利用重叠的段达到特殊的目的?
*********************************************
个人经验发现栈段和数据段部份重叠使用可以达到特殊作用
**********************************************
怎么样的特殊效果?
tinyparticle
[第
3
楼]
[ 回复时间:2009-08-25 00:23 ]
[
引用
]
[
回复
]
[
top
]
荣誉值:188
信誉值:4
注册日期:2009-07-05 19:26
栈段和数据重叠可以省略部分入栈操作,关键还是要看程序,一般不这么做
wu136626
[第
4
楼]
[ 回复时间:2009-08-25 09:59 ]
[
引用
]
[
回复
]
[
top
]
荣誉值:0
信誉值:0
注册日期:2009-08-22 07:47
栈段和数据重叠可以省略部分入栈操作,关键还是要看程序,一般不这么做
*********************
给了我点启发 谢谢 但是栈底在中断的时候产生的代码 怕是会把数据覆盖了
需要登录后才能回帖 -->>
请单击此处登录
Copyright © 2006-2024 ASMEDU.NET All Rights Reserved