簡體   English   中英

有沒有辦法以編程方式獲取當前系統上存在的所有BIOS中斷的列表?

[英]Is there a way to get the list of all BIOS interrupts present on the current system programmatically?

我正在尋找PC提供的BIOS中斷列表。

為了獲得最常見的BIOS調用,可以使用各種公共資源,但是我希望獲得PC上所有(可能不是非常公開)BIOS調用的列表。

是否有程序可以做到這一點,或者有什么方式可以編寫一個(最好是用匯編或C語言編寫)?

我的目標是避免BIOS拆卸。 我也知道BIOS的底層API相對相似,因此API調用列表也相似。

Ralf Brown的中斷清單 ”可能對您有所幫助。

該站點列出了x86系統上通常使用的大多數中斷:

不僅列出了BIOS中斷,而且還列出了MS-DOS中斷和普通程序使用的中斷。 這包括列出Linux系統調用(中斷0x80)的部分。

...即請不要包括...

不幸的是,您將必須分離“常見” BIOS中斷,僅某些BIOS中存在的中斷以及MS-DOS自己中斷。

但是,對於許多中斷,列表中的內容類似於:“僅存在於Example Software Inc.制造的BIOS中”。

我最近的編輯

如果我對您的理解正確,則希望使用某種API來告訴您某個系統上存在哪些中斷。

不幸的是,這樣的API不存在:

BIOS不一定是單個軟件。 而是,某些硬件組件(例如圖形卡)可能具有自己的固件。

這種組件的固件通常沒有自己的中斷,但可以通過更改中斷向量來為BIOS中斷添加功能。

通過更改中斷向量,圖形卡的固件可以向int 10h添加函數AX=5678h ,使其指向以下代碼:

new_int_10_vector:
    cmp ax, 5678h
    je new_function

    ; (In reality, the next line is not as simple as shown here)
    jmp original_int_10_vector

new_function:
    ; Perform the "new" function "AX=5678h" of "int 10h"
    ; ...
    iret

如果現代BIOS供應商希望引入列出所有受支持功能(您正在尋找的功能)的功能,那么他們將有問題:

BIOS應該如何檢測到圖形卡的固件向int 10h添加了附加功能AX=5678h

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM