QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 977|回复: 3

关于页面对齐

[复制链接]
发表于 2004-11-30 19:17:36 | 显示全部楼层 |阅读模式
给出I386处理器家族的页面定义:
#define PAGE_SIZE 12 //物理页面的大小:4K
#define PAGE_MASK (~(PAGE_SIZE-1))

现有代码:
address&=PAGE_MASK;

此处,address被按页面大小对齐了,请问这个算法怎么算的?高手执教,谢谢
发表于 2004-11-30 23:12:57 | 显示全部楼层
你抄错了吧,我记得内核通常的定义方式:
[code:1]
#define PAGE_OFFSET 12
#define PAGE_SIZE (1<<PAGE_OFFSET)
#define PAGE_MASK (~(PAGE_SIZE-1))

address &= PAGE_MASK;    // now addresss page aligned
[/code:1]
即 OFFSET, SIZE, MASK 几个一起定义
[code:1]
PAGE_SIZE = 0x00001000
PAGE_MASK = 0xfffff000
[/code:1]
这样就很明显了。
回复

使用道具 举报

 楼主| 发表于 2004-12-2 15:28:55 | 显示全部楼层
还是看不太懂,能不能把算法说一说?
回复

使用道具 举报

 楼主| 发表于 2004-12-2 15:41:05 | 显示全部楼层
谢谢,我想明白了,谢谢你。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-9-21 09:14 , Processed in 0.090640 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表