|
发表于 2010-7-21 09:26:45
|
显示全部楼层
回复【5楼】rainyss
-----------------------------------------------------------------------
说话太损了哈. 不过确实我说错了.
昨天手头没有程序,我想当然的就认为系统默认把SP放到了Idata的顶部,堆栈是递减的.(有什么是这样的结构么?感觉和什么弄混了)
今天找了个简单的试了一下
REG 0000H 0008H ABSOLUTE "REG BANK 0"
DATA 0008H 0019H UNIT _DATA_GROUP_
DATA 0021H 0004H UNIT ?DT?MAIN
IDATA 0025H 0001H UNIT ?STACK
确实堆栈的递增的. 不好意思误导了一下.
回复【2楼】gibson08
哦 说错了 就是开发环境。我是说 已经压栈的pc值 在59h 60h 2个单元,在函数没有返回59h就被修改了.然后ret时返回到错误的地址
-----------------------------------------------------------------------
1) 带H的应该是16进制吧.(怎么会59H 60H呢,是0x5f,0x60吧)
2) 如果按照你给的map文件,STACK 的范围应该从0x5f(95)开始,存两个地址。现确认这个是正确的吧。你链接的时候有警告么? |
|