call [edi+0x21] 在x86-64指令集下有效吗?

Is call [edi+0x21] valid under the x86-64 instruction set?

call [edi+0x21]在x86-64指令集下有效吗?根据 Intel 手册,FF /2 仅对 r/m64 有效,但我正在测试的在线 encoder/decoder 输出 67 ff 57 21。是我用错了工具,还是我的理解有误?

地址大小和操作数大小是独立的。即使您使用 32 位地址,内存操作数仍然可以有 64 位大小。所以是的,call [edi+0x21] 是一个有效的 64 位模式指令,编码 67 ff 57 21 也是正确的。