作者erspicu (.)
看板ASM
标题[请益] 8086 system bios
时间Thu Feb 4 03:13:01 2016
就我所知道 8086 system bios的位置 应该是从 f0000开始
http://files.osdev.org/mirrors/geezer/osd/ram/index.htm
http://duartes.org/gustavo/blog/post/how-computers-boot-up/
典型会有64KB ,因此范围从f0000到fffff
但我正在观摩的一个专案 8086tiny
https://github.com/adriancable/8086tiny
它把bios image载入到
// Load BIOS image into F000:0100, and set IP to 0100
read(disk[2], regs8 + (reg_ip = 0x100), 0xFF00);
等於是从 F0100 才开始载入
并且载入不是64KB是 ff00 byte
实际上令我纳闷的一点是 它提供的bios档也没那麽大
7.48 KB (7,665 位元组) 而已
目前还在思考作者为啥会这样写 有人能明白吗?
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 61.70.74.143
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/ASM/M.1454526787.A.71E.html
1F:推 WolfLord: x86 reset是到FFFF:0000,在8086上等於是FFFF0 02/04 10:50
2F:→ WolfLord: 他不一定要是完整的64K BLOCK,只要你能正确的MAP MMU 02/04 10:51
3F:→ WolfLord: 任何位址都是可以执行的,另外,小型机器很可能对ROM 02/04 10:52
4F:→ WolfLord: 做不完全解码来操作,所以BIOS很可能在MAP时可以有很多 02/04 10:53
不太清楚什什麽叫"做不完全解码来操作"
5F:→ WolfLord: VIEW作为进入点。这样的优点是一块ROM可以对应很多的区 02/04 10:54
6F:→ WolfLord: 块做不同用途而不避黏很多科IC 02/04 10:54
目前观察结果 再看另一款模拟器叫FAKE86
http://fake86.rubbermallet.org
if (!loadrom (0xFE000UL, biosfile, 1) ) return (-1);
总之得到的结论应该是模拟器各自的非典型行为
按照惯例 区段在 F0000~FFFFF 进入点是FFFF0
不过模拟器的进入点却未必相同 可能是这样吧 不然找不到别解释....
※ 编辑: erspicu (60.248.56.181), 02/04/2016 17:27:45
7F:推 wgst88w: 狼主真是软硬通吃阿,拜服、拜服。 02/04 23:27