作者kkdlin (kkdlin)
看板C_and_CPP
标题[问题] pointer alignment
时间Fri Apr 3 22:13:18 2009
最近在看driver相关的书籍
看到alignment这边 一直有个问题想不通
想请教一下各位
书里面提到一般在将pointer做alignment的时候
是用下面的公式
[pointer + (page_size - 1)] & ~(page_size - 1)
後面的& 的动作可以理解 就是要把後面的位数清成0
变成page size的倍数
可是前面的加(page_size - 1)的动作一直想不懂?
直接将pointer & ~(page_size - 1)不是可以达到一样的效果吗?
想了很久的说..^^"
Thanks in advance
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.32.231.73
※ 编辑: kkdlin 来自: 114.32.231.73 (04/03 22:13)
1F:推 cole945:你在讲的那个是.. 比如说,page 4K, 4.5K取4K, 8.7K取8K 04/03 22:26
2F:→ cole945:可是你说的那个公式是 4.5K取8K, 8.4K取12K 04/03 22:27
3F:→ cole945:当然,如果是恰4K的位数,那就会原本的值.. 04/03 22:28
4F:→ kkdlin:的确 书上那个公式连4.1K都会变成8K 04/03 22:40
5F:→ kkdlin:所以说这个公式应该没有所谓绝对的吧? 是这样吧? thx 04/03 22:41
6F:推 sunneo:要看用途来制作公式 04/03 22:55
7F:→ kkdlin:了解 感谢解说 04/03 22:59