|
网站首页
|
业界新闻
|
小组
|
威客
|
人才
|
下载频道
|
博客
|
代码贴
|
在线编程
|
编程论坛
|
登录
注册
短消息
我发表的主题
我参与的主题
我收藏的贴子
我上传的附件
我下过的附件
编辑个人资料
我的博客
用户控制面板
搜索
道具
恢复默认风格
碧海青天
秋意盎然
棕红预览
粉色回忆
蓝雅绿
紫色淡雅
青青河草
e点小镇
橘子红了
红红夜思
水晶紫色
雪花飘飘
新年快乐
风格
短消息
论坛展区
帮助
编程论坛
→
开发语言
→
『 汇编论坛 』
→ 看来还是发个帖子求教吧-重定位
我的收件箱(0)
欢迎加入我们,一同切磋技术
用户名:
密 码:
共有
1623
人关注过本帖
标题:
看来还是发个帖子求教吧-重定位
取消只看楼主
加入收藏
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
快速回复:
看来还是发个帖子求教吧-重定位
数据加载中...
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.073857 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved