x86组合件中的端口I / O后jmp短路的目的

克莱克纳

在对IDE控制器的可选ROM进行反向工程的过程中,我注意到,每条inorout指令后都有两条jmp short指令,它们仅跳转到下一条指令(opcode EB00),如下所示:

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

这种模式背后的原因到底是什么?

mcleod_ideafix

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

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

JMP X86说明

来自分类Dev

NASM x86组件中的C浮动

来自分类Dev

裸机x86组件中的联网

来自分类Dev

x86 JMP操作码结构

来自分类Dev

LLVM后端:替换x86后端的间接jmp

来自分类Dev

LLVM后端:替换x86后端的间接jmp

来自分类Dev

如何在裸机16位x86组件中睡眠?

来自分类Dev

函数计算AT&T x86组件中的最大值

来自分类Dev

访问冲突MASM x86组件

来自分类Dev

x86-64位组合Linux输入

来自分类Dev

x86 Irvine Assembly jmp + cmp 和条件循环 - 掷骰子游戏

来自分类Dev

MOVUPD与MOVDQU(x86 / x64组件)

来自分类Dev

光标不会在BIOS中断时移动(x86组件/ NASM)

来自分类Dev

x86-64组件中的交换功能

来自分类Dev

从源列表和目的地列表中查找有向加权图中的最短路径

来自分类Dev

何时以及为何在构建后Visual Studio在“ bin”中创建“ x86”子文件夹?

来自分类Dev

JMP文件-订阅后

来自分类Dev

x86组件:尝试反转打印阵列时出现分段错误(核心已转储)

来自分类Dev

无符号短路后C结构中的Empy字节(Visual Studio 2013)

来自分类Dev

关于 Java 8 (OCA) 中的短路运算符和修复后增量的问题

来自分类Dev

我可以使用I / O端口(asm:“输入,输出”)在现代x86_64 CPU上通过PCI Express传输数据吗?

来自分类Dev

从C:\ Program Files(x86)\或C:\ Program Files运行后,WPF应用程序崩溃

来自分类Dev

生成项目的所有唯一组合

来自分类Dev

GTK + 2.0组合框-如何获取条目的位置?

来自分类Dev

生成项目的所有唯一组合

来自分类Dev

.x86文件未执行

来自分类Dev

.x86文件未执行

来自分类Dev

***没有建立目标'class.cpp'的规则,这是`build / .... x86 / class.o`停止所需要的。Ubuntu中的错误

来自分类Dev

Intel X86组装-LT,GT,eq

Related 相关文章

热门标签

归档