我正在嘗試撰寫程式集來訪問 pci 配置空間。
我想要做的基本上就是這篇文章所做的。

我的問題是,因為我試圖在實模式下執行此操作,并且 pci 配置必須通過 32 位資料訪問……我可以在實模式下執行此操作嗎?像 eax 這樣的暫存器可以在實模式下訪問嗎?還是我需要進入保護模式才能做到這一點?
uj5u.com熱心網友回復:
pci 配置必須通過 32 位資料訪問...我可以在實模式下執行此操作嗎?
是的; “實模式”僅表示默認運算元大小為 16 位,但您(匯編程式)可以使用大小覆寫前綴更改默認值。
當然,這僅適用于 32 位 CPU(80386 或更高版本),但我懷疑您是否會關心,因為舊的計算機無論如何都不支持 PCI(但最好有一個“CPU 支持 32 位嗎?”檢查以避免在非常舊的計算機上崩潰而沒有任何解釋)。
對于較新的計算機(使用 PCI express),“PCI 配置空間”增加到每個功能 4 KiB(從原來的每個功能 256 位元組的 PCI 配置空間),并添加了新的記憶體映射 PCI 配置空間機制以使其更快(沒有慢速 IO 埠)。您將無法在實模式下使用記憶體映射 PCI 配置空間機制。幸運的是(出于向后兼容性的原因);仍然支持舊的“IO 埠”訪問機制(但只允許您訪問每個函式的 4096 位元組的前 256 個位元組)并且每個函式的額外 PCI 配置空間主要用于您將無法使用的東西無論如何(例如訊息信號中斷,電源管理,...)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/406283.html
標籤:
