当前位置:  开发笔记 > 编程语言 > 正文

x86汇编中端口I/O后jmp短路的目的

如何解决《x86汇编中端口I/O后jmp短路的目的》经验,为你挑选了1个好方法。

在对IDE控制器的选项ROM进行逆向工程的过程中,我注意到每条in或每条out指令都跟着两条jmp short指令,它们只是跳转到下一条指令(操作码EB00),如下所示:

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

这种模式背后的原因究竟是什么?



1> mcleod_ideaf..:

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

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

推荐阅读
郑小蒜9299_941611_G
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有