Clang 9/GCC 汇编器中的 x86 远返回助记符?

use*_*597 1 x86 assembly gcc clang att

我正在尝试在使用 Clang 9 编译的 .S 文件中编写一段 x86 汇编代码。我需要在代码中使用“far return imm16”指令,我尝试使用带或不带立即操作数的“retf” ,但编译器无法识别它并给我“ error: invalid instruction mnemonic 'retf'”。它只识别“ret”和“retn”。

我究竟做错了什么?我需要使用的正确助记符是什么?

fuz*_*fuz 5

助记符是lret. 像这样使用它:

lret $0x1234
Run Code Online (Sandbox Code Playgroud)

对于未来类似的问题,您始终可以使用英特尔语法汇编一个文件:

.syntax intel,noprefix

        retf 0x1234
Run Code Online (Sandbox Code Playgroud)

然后反汇编它objdump以获得该指令的 AT&T 语法:

   0:   ca 34 12                lret   $0x1234
Run Code Online (Sandbox Code Playgroud)