gpt4 book ai didi

assembly - NASM:输入/输出而不是 int

转载 作者:行者123 更新时间:2023-12-02 06:56:20 26 4
gpt4 key购买 nike

编写引导加载程序时,如何调用端口而不是使用中断(即 int 10h)?是否有我不知道的已知载体的在线列表?有没有我可以去映射 bios 中断未涵盖的硬件(即 PCI - GPU)的地方?

最佳答案

好吧,问题在于它不仅仅是硬件的映射,也不仅仅是计算机中的引导加载程序。

你真正说的是驱动程序的编写。 BIOS 管理最简单的设备,并使用最佳可用方法来实现程序员的需求。对于程序员来说,有 API 可以访问它,这对于 x86 实模式意味着中断,因为它们是进行完整上下文切换的最简单方法。

如果您仍想保持实模式,还有几个您可能不知道的中断,可以在某种程度上找到完整的 Ralf Brown´s Interrupt List .

但是,PCI 和 GPU 以高频处理 大量 数据,这需要更多的内存和性能,这在实模式下操作起来并不容易。 protected 和长模式是必经之路。

I8086 提到了inout 指令作为访问设备的方法。虽然这曾经是正确的并且对于某些设备仍然如此,但还有许多其他与硬件通信的方式,例如内存映射、DMA 或与协处理器的通信。有时您只需使用 inout 来找出设备内存所在的位置,然后使用内存映射接口(interface)访问它。我相信 PCI 就是其中之一。这些界面不再难用,但更有效。

您几乎会立即撞到名为“缺少官方和免费文档”的墙。您一定不要对此感到失望,总是有很多设备可以免费获得其数据表和程序员引用资料(我们承认英特尔拥有大量文档),尽管它并不总是您自己的 GPU 或网卡。

TL;DR:您应该尽快切换到保护模式以解锁新的选项范围,然后您可以考虑编写一些驱动程序。 OSDev Wiki肯定会成为一个很好的资源。

关于assembly - NASM:输入/输出而不是 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30649541/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com