Assembly 读取I/O端口是否有任何副作用?在编程I/O中呢?

Assembly 读取I/O端口是否有任何副作用?在编程I/O中呢?,assembly,x86,port,cpu,ata,Assembly,X86,Port,Cpu,Ata,读取CPU端口(通过in/out指令)是否有任何副作用 例如: 它是否“告诉”设备端口已被读取 不小心读取任意端口会造成任何伤害吗 我认为不应该这样,但我觉得有些事情没有道理: 如果没有副作用,那么ATA驱动器在执行编程I/O时如何“知道”一个字何时已被读取,以便能够提供下一个字的数据?是的,读取端口可能会有副作用,但是否有副作用(如果有,它们是什么)因设备而异 我从来没有听说过读端口会损坏设备。一些(但大部分是旧的)可能会因为写入错误的值而损坏/导致损坏,但我不知道任何读数会导致损坏。在大多数

读取CPU端口(通过
in
/
out
指令)是否有任何副作用

例如:

  • 它是否“告诉”设备端口已被读取

  • 不小心读取任意端口会造成任何伤害吗

  • 我认为不应该这样,但我觉得有些事情没有道理:


    如果没有副作用,那么ATA驱动器在执行编程I/O时如何“知道”一个字何时已被读取,以便能够提供下一个字的数据?

    是的,读取端口可能会有副作用,但是否有副作用(如果有,它们是什么)因设备而异

    我从来没有听说过读端口会损坏设备。一些(但大部分是旧的)可能会因为写入错误的值而损坏/导致损坏,但我不知道任何读数会导致损坏。在大多数情况下,阅读的副作用相当轻微


    阅读的行为可以告诉设备它正在被阅读。要从设备读取数据,需要在总线上放置命令和地址。如果命令为“读取”,且地址对应于设备,则设备正在被读取。

    是的,读取端口可能会产生副作用,但是否会产生副作用(如果是,它们是什么)因设备而异

    我从来没有听说过读端口会损坏设备。一些(但大部分是旧的)可能会因为写入错误的值而损坏/导致损坏,但我不知道任何读数会导致损坏。在大多数情况下,阅读的副作用相当轻微


    阅读的行为可以告诉设备它正在被阅读。要从设备读取数据,需要在总线上放置命令和地址。如果命令是“读取”且地址对应于设备,则设备正在被读取。

    也许我误解了,但读取I/O不是副作用的定义吗?@KilianFoth:这是一个输入端口。。。如果它只是读取一个电压,根据定义它不应该改变值,对吗?也许不是,这就是为什么我要问。。。不管怎样,有些东西对我来说没有意义…它不应该,但CPU是复杂的,并且有各种各样的专有的奇怪之处。你最好试试,看看会发生什么。@polyman:好吧,如果是这样的话,我可能不会试,因为我不想炸东西哈哈。这就是我问的原因之一,谢谢你提供的信息也许我误解了,但读取I/O不是副作用的定义吗?@KilianFoth:这是一个输入端口。。。如果它只是读取一个电压,根据定义它不应该改变值,对吗?也许不是,这就是为什么我要问。。。不管怎样,有些东西对我来说没有意义…它不应该,但CPU是复杂的,并且有各种各样的专有的奇怪之处。你最好试试,看看会发生什么。@polyman:好吧,如果是这样的话,我可能不会试,因为我不想炸东西哈哈。这就是我问的原因之一,谢谢你提供的信息好的,谢谢。关于ATA的事情有什么答案吗?(我对端口的读取是否“告诉”驱动器端口已读取?或者它是否找到了其他方式?@Mehrdad:我在答案中添加了更多内容。
    要从设备读取,您需要在总线上放置一个命令和地址。
    ->太棒了,这似乎回答了我所有的问题,谢谢+1好的,谢谢。关于ATA的事情有什么答案吗?(我对端口的读取是否“告诉”驱动器端口已读取?或者它是否找到了其他方式?@Mehrdad:我在答案中添加了更多内容。
    要从设备读取,您需要在总线上放置一个命令和地址。
    ->太棒了,这似乎回答了我所有的问题,谢谢!