关于寻址的一点猜想,以后真正了解了再修改
来源:互联网 发布:java多泛型转换 编辑:程序博客网 时间:2024/06/06 14:17
书上一直都说 物理地址=段地址*16+偏移地址。
要是以前的我,可能就搞不明白为什么要*16了,可能就直接死记了。
多想了一下,原来如此,为什么*16是因为书上的例子原因,教程啊,你能不能写明白为什么要*16呢。。。
例子是8086的CPU是16位CPU,所以CPU中的寄存器是16位的,内部总线也是16位的,但是CPU的地址总线是20位的。
这样的情况下,CPU中只能处理16位的数据,因为寄存器只有16位,但是地址总线有20位,这样就导致了部分的地址是没办法寻找到了。
所以前辈们想到了一个办法,CPU中的两个16位地址经过某种处理得到20位的地址数据。这个办法就是上面所说的公式了。
至于*16是为什么,那是因为段地址在左移了一位之后就成了一个20位的地址数据,这个时候再跟偏移地址相加就是物理地址了。20位的地址总线比16位的内部总线要多出了4位,4位的0或者1,根据8421码(进制转换内容)来看的话,这个4位就是16了,再说了16进制的数据中*16就是表示左移一位,/16就是表示右移一位。
依我个人观点,也就是教程中CPU是8086的CPU,所以才*16,如果换做是其他的CPU,还真不一定是*16了,到底乘多少,真得依具体情况看看了。如果啊,如果CPU是32位的,地址总线宽度是48的话,那么估计就要*128了,因为2的16次方。
而这个偏移地址如何来确定的问题。
8086CPU,内存地址空间中存储的地址都是一些16位的地址,这些地址有一些是段地址,有一些是偏移地址。段地址就是某个存储单元的段的开始地址,而这个偏移地址就是某个存储单元相对于段地址的偏移的地址。这个偏移地址如何来确定,这个问题应该去问问CPU,或者其他硬件设备的生产厂商了。。。。这个我就不清楚了。
- 关于寻址的一点猜想,以后真正了解了再修改
- 关于神经网络的一点猜想
- 看完了linux书第二章后,关于内存寻址的一点总结
- 关于框架的漏洞的一点猜想
- 关于GUID的一点了解
- 关于SPOOL的一点了解
- 关于arXive的一点了解
- 关于Google Earth的几年后的一点猜想--SQ
- 关于EditText的一点深入的了解
- 关于EditText的一点深入的了解
- 关于EditText的一点深入的了解
- 关于EditText的一点深入的了解
- 关于CCIR656的一点基础了解
- 关于CCIR656/sRGB的一点基础了解
- 关于CCIR656的一点基础了解
- 关于反爬虫的一点了解
- 一点关于破解的东西,以后整理整理
- 关于实时 Ambient Occlusion 一点猜想
- kfs代码研究(一、kfs代码目录结构)
- pl/sql变量--%TYPE
- 本机IP与物理地址
- SVN操作
- 微软面试题答案
- 关于寻址的一点猜想,以后真正了解了再修改
- the pointer to a structure
- poj 1003 Hangover
- kfs代码研究(二、meta server处理流程)
- C语言链表的创建、插入、查找、删除、清空操作
- 使用Validator改进数据向导生成的Flex应用
- Android模拟机出现Installation failed due to invalid APK file错误
- java哈希表
- 最大连续子序列--acm2479