x64 弹出指令(操作码 + rd)

x64 pop instructions (opcode + rd)

这里是使用intel x64手册第1159页的shortcut opcodes的pop指令:

58+ rw POP r16 Pop top of stack into r16; increment stack
pointer.

58+ rd POP r64 Pop top of stack into r64; increment stack
pointer.

这些指令是使用 Rex.R 还是 Rex.B 对寄存器 9-16 进行编码,还是只是将它们添加到操作码中? 64位版本也使用Rex.W吗?我以前从未 运行 进入过这些寄存器快捷指令。

将寄存器操作数编码为操作码一部分的指令使用 REX.B 字段访问寄存器 r8 等。

64 位推送和弹出不需要 REX.W,默认情况下它们是 64 位的,没有办法使它们成为 32 位。可以通过使用 66h 前缀将它们设为 16 位。