对于*(mmu_tbl_base)+virtuladdr>>20等的一点理解

原创 2011年01月21日 19:11:00

如下:

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_tlb_base + (virtuladdr >> 20))的理解

对于MVA到PA转换过程,以及描述符所扮演的角色,请看下图: 来看代码:unsigned long virtuladdr, physicaladdr; unsigned long *mmu_tlb_...
  • czg13548930186
  • czg13548930186
  • 2017-07-12 09:39:43
  • 5779

对于*(mmu_tbl_base)+virtuladdr>>20等的一点理解

如下:unsigned long *mmu_tlb_base = (unsigned long *)0x30000000; 如果执行mmu_tlb_base=mmu_tlb_base+1,会得到mmu...
  • zhou1232006
  • zhou1232006
  • 2011-01-21 19:11:00
  • 1697

MMU管理机制

from: http://hi.baidu.com/ting160/blog/item/419ba1eb1bce7c38adafd574.html MMU:存储器管理单元         ...
  • hw_henry2008
  • hw_henry2008
  • 2011-09-04 18:56:54
  • 4330

对于anchorPoint的一点理解

每当修改一个CALayer的anchorPoint属性时,都要重新设置CALayer的position坐标 1.CALayer *layer = [myView layer]; 2.[la...
  • ch_soft
  • ch_soft
  • 2012-11-19 13:56:03
  • 4213

对于Session的一点理解

Session 1、浏览器(或者客服端等)和服务器的一次会话的过程,会话结束,session失效。(注意是服务器是代码所在的服务器,而不是微信服务器的第三方服务器) 2、cache谁都可以读。sess...
  • qq_21583681
  • qq_21583681
  • 2017-08-04 13:53:28
  • 78

MMU和TLB

MMU和TLB 记得那家芯片公司给我电话面试的时候,别的都还好,可是他问我什么是MMU,我只能干瞪眼。今天在看《Linux内核源码(陈莉君)》的时候,无意中看到第二章内存地址这一节,学习如下: ...
  • fivedoumi
  • fivedoumi
  • 2015-12-14 11:04:50
  • 664

mmu以及页表 linuxkernel(2)

对于mmu的作用,参看第一篇的介绍 这里讲linux kenel的mmu和页表 linux有两次页表处理 第一次是在arch/arm/kernel/head.s里面 第二次是是在start_k...
  • groundhappy
  • groundhappy
  • 2017-02-06 18:34:10
  • 553

对于数据库范式的一点理解

数据库设计中的范式
  • SevenChristine
  • SevenChristine
  • 2016-06-03 19:53:12
  • 185

对于handler的一点理解

都知道android是线程不安全的,所以需要handler来处理一些耗时的
  • genggeng001
  • genggeng001
  • 2014-11-14 00:02:22
  • 497

bootloader 解析

bootloader   转载▼ http://blog.sina.com.cn/s/blog_5d0e8d0d01014u8q.html  Bootloader的启动 Li...
  • csu_yang
  • csu_yang
  • 2016-09-29 23:04:58
  • 2640
收藏助手
不良信息举报
您举报文章:对于*(mmu_tbl_base)+virtuladdr>>20等的一点理解
举报原因:
原因补充:

(最多只允许输入30个字)