这些推送 r16 编码在 64 位模式下是否正确?

Are these push r16 encodings correct under 64BIT mode?

提问人:YutakaAoki 提问时间:7/29/2023 最后编辑:Peter CordesYutakaAoki 更新时间:7/30/2023 访问量:54

问:

关于在 Intel x86_64 CPU 的 64BIT 模式下推送 wordregister(r16)。

在 B-28 第 2D 卷中, 附录 B,指令格式和编码, 英特尔组合手册 PDF, 订单号:325462-080US,2023 年 6 月。

表 B-15.64 位模式的通用指令格式和编码(续)enter image description here

我认为正确的是 0110_0110 (0x66)。但它是 0101_0101 (0x55)。 0x66 是一个操作数大小前缀,用于将操作数大小更改为 16 位,其中 CPU 处于 64 位模式。 但我不知道0x55前缀。

此外,没有推送 imm64 指令, 根据如何在 NASM 中推送 64 位 int?

enter image description here

汇编 x86-64 英特尔 机器代码 指令编码

评论

2赞 Peter Cordes 7/29/2023
对,64 位模式下的编码是 。 是 的操作码。英特尔的手册是出了名的不完美,您可能需要向英特尔报告这些缺陷(可能在他们的论坛上)以便他们更新。push ax66h 50h55hpush rbp

答: 暂无答案