搜索
编程论坛
→
开发语言
→
『 汇编论坛 』
→ 看来还是发个帖子求教吧-重定位
标题:
看来还是发个帖子求教吧-重定位
取消只看楼主
zongzhitao
等 级:
论坛游民
帖 子:16
专家分:10
注 册:2010-10-1
结帖率:
100%
楼主
已结贴
√
问题点数:20 回复次数:8
看来还是发个帖子求教吧-重定位
重定位
call @F
@@:
pop ebx
sub ebx,offset@B
这段代码问题之前有人问过了,我有几个地方还是有一点困惑
1 call @f 换成push @f或者push offset @f 对不对
2 sub ebx,offset@B 换成 sub ebx,@B 对不对
我在RADASM中试了试第二个好像是一样的。
谢谢大家了,顺便祝大家国庆快乐
搜索更多相关主题的帖子:
帖子
2010-10-01 09:46
zongzhitao
等 级:
论坛游民
帖 子:16
专家分:10
注 册:2010-10-1
第
2
楼
得分:0
疑惑ing,如果call将正确的返回地址进栈,那么push能不能呢,push @f和push offset @f,我觉得前面一个可以,后面一个不对。
2010-10-01 09:50
zongzhitao
等 级:
论坛游民
帖 子:16
专家分:10
注 册:2010-10-1
第
3
楼
得分:0
刚和丫头去了超市,人真TMD多。用的RADASM不好编译啊
2010-10-01 10:49
zongzhitao
等 级:
论坛游民
帖 子:16
专家分:10
注 册:2010-10-1
第
4
楼
得分:0
版主,我还给你发了短信呢
2010-10-01 10:50
zongzhitao
等 级:
论坛游民
帖 子:16
专家分:10
注 册:2010-10-1
第
5
楼
得分:0
好吧,我试过了cal 改成 push 加了一个offset也一样
XXXXXXXX指令引用的XXXXXXXXXXX内存。该内存不能为writen
2010-10-01 12:01
zongzhitao
等 级:
论坛游民
帖 子:16
专家分:10
注 册:2010-10-1
第
6
楼
得分:0
谢谢大家乐,我会好好想的,特别谢谢版主和你们都要疼我哦
2010-10-01 14:47
zongzhitao
等 级:
论坛游民
帖 子:16
专家分:10
注 册:2010-10-1
第
7
楼
得分:0
顺便留个作业
call $+5
pop ebx
sub ebx,$-1
这个 对吗? 自己想想啦
;--------------------------------------------
交作业了,我觉得应该是对的,call &+5正好是pop ebx的地址(这样形容可以吗),sub ebx,$-1也正好是pop ebx
;--------------------------------------------
终于找到我问题的关键了,zklhp 版主说的 刚才call @f的机器码是 E8 00000000,而push @f 的机器码68 05104000 因为带了05104000,所以移动的话会出错。。。。
不知道我的理解是不是
2010-10-01 15:13
zongzhitao
等 级:
论坛游民
帖 子:16
专家分:10
注 册:2010-10-1
第
8
楼
得分:0
你们真早啊,我刚送丫头去上学。。
2010-10-02 09:06
zongzhitao
等 级:
论坛游民
帖 子:16
专家分:10
注 册:2010-10-1
第
9
楼
得分:0
offset@B在编译时就固定了,以常量的形式存在,如果代码按照默认装载
地址装入,那么就不需要重定位,存在于ebx中的@@标号的实际地址和以常
量的形式存在的offset@B的值相等。
如果没有按照默认地址装载,那么他们的值是不等的,SUB以后就得到了两者
的差值,这个差值最后放在ebx中, 然后用这个差值去修正代码中需要进行
重新定位的数据。
实际装载地址可以每次都不同,即存在于ebx中的@@标号的实际地址可以每次
都不同, 但是offset@B在编译时就固定了,以常量的形式存在,不管实际地址
如何改变,这个值是固定不变的,它表示的就是不需重定位时@@标号的地址。
--------------------------------------------------------------------
感谢你们不厌其烦的为我解答,谢谢你们啦
2010-10-02 09:11
9
1/1页
1
参与讨论请移步原网站贴子:
https://bbs.bccn.net/thread-321794-1-1.html
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.607238 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved