讀取CPU端口(通過in
/out
指令)是否有任何副作用?讀取I/O端口是否有任何副作用?程序化I/O中的情況如何?
例如:
是否「知道」該端口已被讀取的設備?
不小心讀取任意一個端口會造成什麼危害?
我假設它不應該,但後來事情沒有意義對我說:
如果沒有副作用,那麼如何ATA驅動器,當進行編程的I/O,「知道」何時讀取了一個單詞,因此它可以提供下一個數據字?
讀取CPU端口(通過in
/out
指令)是否有任何副作用?讀取I/O端口是否有任何副作用?程序化I/O中的情況如何?
例如:
是否「知道」該端口已被讀取的設備?
不小心讀取任意一個端口會造成什麼危害?
我假設它不應該,但後來事情沒有意義對我說:
如果沒有副作用,那麼如何ATA驅動器,當進行編程的I/O,「知道」何時讀取了一個單詞,因此它可以提供下一個數據字?
是的,讀取端口可能會產生副作用,但不管它是否(如果是這樣,它們是什麼)在不同設備之間有所不同。
我從來沒有聽說過讀取端口可能會損壞的設備。一個幾(但大多是舊的)可能會被寫入一個不正確的值損壞/造成損害,但我不知道任何讀數可能會造成損害。在大多數情況下,閱讀的副作用相當輕微。
閱讀行爲可以告訴設備正在閱讀。要從設備讀取數據,您需要在總線上放置一個命令和一個地址。如果命令是「讀取」並且地址對應於設備,則設備正在被讀取。
也許我誤解了,但不是讀I/O的副作用的定義? –
@KilianFoth:這是一個輸入端口...如果它只是讀取電壓,根據定義它不應該改變該值,對吧?或者可能不是,這就是爲什麼我問...無論哪種方式,對我來說沒有任何意義... – Mehrdad
它*不應該*,但CPU是複雜的,並具有各種專有怪異。你最好的選擇是嘗試一下,看看會發生什麼。 – Polynomial