为什么在x86文档中找不到insl指令

Tia*_*xin 1 x86 assembly gcc

任何人都可以告诉我以下方法。我听不懂insl指令

static inline void
    insl(uint32_t port, void *addr, int cnt) {
        asm volatile (
            "cld;"
            "repne; insl;"
            : "=D" (addr), "=c" (cnt)
            : "d" (port), "0" (addr), "1" (cnt)
            : "memory", "cc");
    }
Run Code Online (Sandbox Code Playgroud)

lin*_*ina 5

该函数将从cnt dwords指定的输入端口读取port到提供的输出数组中addr

insl等效于insdhttp : //x86.renejeschke.de/html/file_module_x86_id_141.html

GAS语法使用l后缀表示对dword(32位大小)数据进行操作的指令。

  • @Tianxin这只是旧的x86指令集的遗物。早在我们的寄存器较少时,每个寄存器都有其预期的目的。许多指令使用隐式输入/输出寄存器...“输入” /“输出”使用“ ax”和“ dx”,而字符串指令使用“ si” /“ di”。隐式寄存器使操作码更短。 (4认同)