免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2078 | 回复: 3
打印 上一主题 下一主题

情景分析中的一个问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-01-14 13:20 |只看该作者 |倒序浏览
再linux情景分析中,作者举了一个例子
#include <stdio.h>
greeting()
{
printf("Hello, world!\n");
}
main()
{
greeting();
}

反汇编以后
08048368 <greeting>:
8048368: 55 push %ebp
8048369: 89 e5 mov %esp,%ebp
804836b: 83 ec 08 sub $0x8,%esp
804836e: 83 ec 0c sub $0xc,%esp
8048371: 68 84 84 04 08 push $0x8048484
8048376: e8 35 ff ff ff call 80482b0 <printf@plt>
804837b: 83 c4 10 add $0x10,%esp
804837e: c9 leave
804837f: c3 ret

08048380 <main>:
8048380: 55 push %ebp
8048381: 89 e5 mov %esp,%ebp
8048383: 83 ec 08 sub $0x8,%esp
8048386: 83 e4 f0 and $0xfffffff0,%esp
8048389: b8 00 00 00 00 mov $0x0,%eax
804838e: 83 c0 0f add $0xf,%eax
8048391: 83 c0 0f add $0xf,%eax
8048394: c1 e8 04 shr $0x4,%eax
8048397: c1 e0 04 shl $0x4,%eax
804839a: 29 c4 sub %eax,%esp
804839c: e8 c7 ff ff ff call 8048368 <greeting>
80483a1: c9 leave
80483a2: c3 ret
80483a3: 90 nop

树上说,再main()调用call的时候,要走一个完整的,段式转换,页是转化的过程,但我不明白为什么要进行段式映射,请朋友们解释一下

论坛徽章:
0
2 [报告]
发表于 2009-01-14 23:07 |只看该作者
原帖由 xdshting 于 2009-1-14 13:20 发表
再linux情景分析中,作者举了一个例子
#include
greeting()
{
printf("Hello, world!\n");
}
main()
{
greeting();
}

反汇编以后
08048368 :
8048368: 55 push %ebp
8048369: 89 e5 mov %esp,% ...



x86 处理器 MMU 管理内存地址必须先经过 segmentation (分段),无论 kernel 是怎样设计都无法逃脱这一架构。

一条要执行的指令寻址必定是:cs:ip

即:cs.selector -> gdt/ldt -> descriptor -> code's base address -> base + ip

这就是段式转换(segment address -> linear address)

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
3 [报告]
发表于 2009-01-15 01:32 |只看该作者
LZ可以看看x86的mmu部分,这样会有更深的了解

论坛徽章:
0
4 [报告]
发表于 2009-01-15 14:46 |只看该作者
先谢谢楼上两位

是我理解错了,没看仔细书

我理解成在进行call调用的时候,要对cs的内容进行修改,测试了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP