gpt4 book ai didi

assembly - x86 汇编中端口 I/O 后 jmp 短接的用途

转载 作者:行者123 更新时间:2023-12-03 06:35:21 26 4
gpt4 key购买 nike

在对 IDE Controller 的选项 ROM 进行逆向工程的过程中,我注意到每个 inout 指令后面都跟着两个 jmp Short 指令,它只是跳转到下一条指令(操作码 EB00),如下所示:

    out dx, al
jmp short next1
next1:
jmp short next2
next2:
; code continues

这种模式背后的具体原因是什么?

最佳答案

当 CPU 开始以超过 I/O 设备处理速度的速度运行时,允许 I/O 设备在下一个数据到达之前处理之前发送给它的数据。它经常与 PIT 定时器 (8253) 一起使用,其中需要两个 8 位 OUT 才能在芯片的三个定时器之一中写入 16 位值。

此外,这是必要的,因为原始的PC架构并没有使用READY信号来停止CPU,直到I/O设备处理完数据,因此必须在软件中执行等待。 JMP 非常适合,因为它引入了队列刷新,因此 CPU 浪费了一些周期来执行实际跳转。

关于assembly - x86 汇编中端口 I/O 后 jmp 短接的用途,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34319065/

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