Intel Reset Vector

自古美人都是妖i 提交于 2020-01-04 14:28:10

问题


Possible duplicate: Software initialization code at 0xFFFFFFF0H

When the system boots up (Intel), reset vector is at address 0xFFFFFFF0 (16 bytes less than 4G) (as mentioned in above link). That address contains FAR JUMP to where the BIOS is. I read the answer, comments and referenced link, also did some searching, but still cannot understand how 32-bit address can be map to 16-bit (Real Mode)?

My confusion is that in this link: http://www.starman.vertcomp.com/asm/bios/index.html, author mentioned that address F000:FFF0 (16 bytes less than 1MB) contains JUMP to where the BIOS is.

  1. How 0xFFFFFFF0 gets mapped to F000:FFF0? Does it even gets mapped?
  2. If the computer doesn't have physical 4G of memory, let say it has only 1G, where is the 0xFFFFFFF0 address?

Thanks in advance for help.


回答1:


When I have a chance I will edit this with references.

The 386 manual states that the address lines 31-20 are high on reset until a JMP is encountered, then they are low again. The mapping isn't really there its more of a hack.

The top if the address space where there is no RAM (in a system with say 1GB of RAM) the chipset will map ROM code rather than RAM to that address. It doesn't make sense to have RAM there since on first power on there would be no code there to execute, so it must be non volatile.



来源:https://stackoverflow.com/questions/22190042/intel-reset-vector

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!