jetcan 发表于 2024-8-4 19:21:21

请教:《实模式到保护模式(第2版)》第 16 章 16.4.7 p313 页【I/O 许可位映射区】问题

尊敬的李老师,您好!
有 2 个问题请教您,请百忙中给予指教!

在您的书中 16.4.7 p313 页,图 16-18 TSS中的 I/O 许可位映射区中;

1. TSS 段偏移 102 处:是 I/O 映射基地址,既然是基地址但内存单元只给了 16 比特,怎么保存 32 位的基地址?还是 I/O 映射基地址,实际指的是 I/O 映射区距 TSS 为 0 处的偏移地址?

2. I/O 映射区需要 0xFF 字节结尾,那么如果 I/O 映射区为 65536 字节,是 65537 字节设为 0xFF,还是第 65536 字节设为 0xFF?

3. 扩展出的 I/O 映射区与 TSS 段可以不连续,而 TSS 基地址由内核动态分配,那么此时是否只能用 4GB 段描述符寻址 TSS,段界限是否也要设置为 4GB?

谢谢!

站长 发表于 2024-8-5 17:43:52

1,I/O映射基地址虽然号称基地址,但它填写的是I/O映射位图相对于TSS起始处的距离,只需大于103就意味着它是存在的。I/O映射许可位图在TSS内部。

2,在I/O许可位置内,每个比特对应一个端口,而不是一个字节对应一个端口,这一点书上讲得很清楚。0xFF的字节是额外添加的,其原因书上讲得非常明白。

3,TSS的位置无所谓,它的基地址和偏移量由TSS描述符指定,而TSS描述符的选择子位于任务寄存器TR。

我感觉你这问题在书在都有解释,你看书不细啊,是不是跳着看的。

站长 发表于 2024-8-5 17:45:10

好吧,我认为你看的是64位的书。64位教材确实没过多解释TSS。
回头看一下《x86汇编语言:从实模式到保护模式》

jetcan 发表于 2024-8-6 23:13:55

谢谢,看到李老师的回复了。书的确是跳着看的,谢谢李老师!:P
页: [1]
查看完整版本: 请教:《实模式到保护模式(第2版)》第 16 章 16.4.7 p313 页【I/O 许可位映射区】问题