assembly - 有没有关于指令 `jmpi`的权威文件

标签 assembly linux-kernel x86

我正在学习 Linux 的工作原理。我遇到了一个奇怪的汇编语言指令,jmpi。我可以在各个网站上找到一些解释,但奇怪的是我在汇编语言书籍中找不到它,包括Intel® 64 and IA-32 Architectures Software Developer’s Manual 。我查了这本书,但没有包含jmpi指令。我觉得Intel手册应该是Intel汇编语言最权威的书了。所以这很奇怪。

我的问题是:是否有一些书籍或权威文件记录了此说明?

最佳答案

英特尔处理器指令集中有多个 JMP 指令。它们具有相同的预期结果,但所采用的操作数类型有所不同:8 位常量、16 位常量、32 位常量、间接指定的值;也是相对跳跃还是绝对跳跃。请参阅架构手册第 854 页中的表格

Opcode Instruction  Description
------+------------+----------------------------
EB cb  JMP rel8     Jump short
E9 cw  JMP rel16    Jump near, relative
E9 cd  JMP rel32    Jump near, relative
FF /4  JMP r/m16    Jump near, absolute indirect
FF /4  JMP r/m32    Jump near, absolute indirect
FF /4  JMP r/m64    Jump near, absolute indirect
EA cd  JMP ptr16:16 Jump far, absolute
...

它们被视为架构开发的不同阶段支持的不同内存模型的遗产,被区别对待。

许多汇编器引入了额外的助记符来使汇编代码更具可读性。因此,在 as86 中,JMPI 指令引用近 JMP,它可以是绝对的,也可以是相对的,但应始终位于代码段内, 段内跳转as86 是唯一的权威引用。

关于assembly - 有没有关于指令 `jmpi`的权威文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14464092/

相关文章:

c - 从 tcp 拥塞控制 Linux 内核模块访问 TCP header

c++ - OllyDbg 无法调试visual studio exe

linux - 内核 panic - 不同步。初始化段错误

assembly - x86 128 位原子操作

networking - eBPF : global variables and structs

x86 - Bit Hack 获取位变化的位置

assembly - x86 汇编中的方括号是什么意思?

c - 缓冲区溢出: execute char array loaded into memory

c - gcc 内联汇编 - `add' 的操作数类型不匹配,试图创建无分支代码

string - 在汇编中,我想搜索一个字符串,替换一个单词,然后显示新字符串