repertorio instruction instrucciones familia assembler assembly x86 isa

assembly - instruction - ¿Cómo distingue la CPU ''CALL rel16''(E8 cw) y ''CALL rel32''(E8 cd)?



intel x86 instruction set (1)

¿Cómo distingue la CPU CALL rel16 (E8 cw) y CALL rel32 (E8 cd)?

Según este sitio , reflejando los manuales de arquitectura Intel, los CALL rel16 para CALL rel16 y CALL rel32 son E8 cw y E8 cd , respectivamente.

Esto me ha hecho preguntarme, ¿cómo distingue la CPU estos códigos de operación entre sí, ya que E8 cw podría ser un prefijo de E8 cw ?


El prefijo 66 se usa para alternar entre el tamaño de operando de 16 y 32 bits. Entonces, en modos de operación de 16 bits, E8 cw es CALL rel16 y 66 E8 cd es CALL rel32 , mientras que en modo de operación de 32 bits, E8 cd es CALL rel32 y 66 E8 cw es CALL rel16 .

En modo largo (modo de 64 bits), CALL rel16 parece no estar disponible según los manuales de Intel. CALL rel32 funciona como en el modo de 32 bits pero el rel32 inmediato es un signo extendido a 64 bit y agregado a rip lugar de eip .