对于*(mmu_tbl_base)+virtuladdr>>20等的一点理解
来源:互联网 发布:知乎 感谢领导知遇之恩 编辑:程序博客网 时间:2024/06/05 11:54
如下:
unsigned long *mmu_tlb_base = (unsigned long *)0x30000000;
如果执行mmu_tlb_base=mmu_tlb_base+1,会得到mmu_tlb_base为0x30000004的结果,对于指针的加减操作会将+1自动转换为+指针类型字节数
(unsigned short *)mmu_tlb_base+1的结果是0x30000002
(unsigned long)mmu_tlb_base+1的结果是0x30000001
long指针是4字节对齐,所以+1实际上地址等于+4
short指针是2字节对齐,所以+1实际上地址等于+2
long指针是1字节对齐,所以+1实际上地址等于+1
int不同编译器针对不同硬件平台会得出不同结果,有可能是32位(4字节),也有可能是16位(2字节)
----------------------------------
将一个立即数的值传给指针前必须加(long *)这样的强制转换是C语言为了防止误操作采取的一种保护措施,不同指针有不同的对齐要求,虽然立即数可以表示出地址的具体数值,但存在一个问题:有可能给一个不满足对齐要求的值给long这样有对齐要求的指针,这样会出错,如果语法上要求必须强制转换,可以提醒程序员在该位置留意转换的对齐问题
- 对于*(mmu_tbl_base)+virtuladdr>>20等的一点理解
- 【补充】 关于*(mmu_tlb_base + (virtuladdr >> 20))的理解
- 【补充】 关于*(mmu_tlb_base + (virtuladdr >> 20))的理解
- 对于anchorPoint的一点理解
- 对于handler的一点理解
- 对于Session的一点理解
- 嵌入式裸机开发学习:MMU代码中的virtuladdr >> 20 的个人理解
- 对于架构师的一点理解(来自网友讨论)
- Android: 对于Handler的一点理解。
- 对于POJ 1011的一点理解
- 我对于KMP算法的一点理解
- 对于cc2530GPIO中断的一点理解。
- 对于alphago文章的一点理解
- 对于数据库范式的一点理解
- 对于application一点理解
- 对于C++11中lambda函数的一点理解(上篇)
- 对于C++11中lambda函数的一点理解(下篇)
- 对于C++保护继承方式的一点理解
- Container容器(类模板内容)
- 中关村黑马程序员的一些课程,有用~
- VC宏定义 ##说明
- 不同字体在浏览器下的表现总结
- Adodb.Stream
- 对于*(mmu_tbl_base)+virtuladdr>>20等的一点理解
- 解决ubuntu没有声音的方法
- img对象间产生间隙和排列不整齐的解决方法
- 使用Java NIO编写高性能的服务器
- HDU 1274 展开字符串
- 网站SEO优化价格误区
- MySQL 文章管理
- 阿里巴巴DBA面试题及一份答案
- 浮点数比较之我见