Saltar al contenido

¿Qué significa salto “corto” en lenguaje ensamblador?

Revisamos exhaustivamente cada posts en nuestro espacio con la meta de enseñarte siempre información certera y certera.

Solución:

Los saltos cortos (y las llamadas cercanas) son saltos cuyo objetivo está en el mismo módulo (son intramodulares, sin embargo, es posible obtener variantes intermodulares de ciertos hacks), generalmente son de hasta 127 bytes de desplazamiento relativo (cambian el flujo de ejecución hacia adelante o hacia atrás desde la dirección de la instrucción), sin embargo, hay variantes de 16 bits que ofrecen 32k bytes. Realmente no necesita preocuparse mucho por eso, es información realmente superflua, pero los manuales para desarrolladores de Intel (volúmenes 2a y 2b, específicamente 2a) cubrirán los detalles sangrientos.

Se puede lograr un salto corto utilizando un desplazamiento relativo de la instrucción de ensamblaje actual. Para x86/32 bits, esta es una instrucción de 2 bytes, donde el primer byte siempre es EBpara salto corto, y el segundo byte es el número de bytes antes o después la instrucción actual para saltar. El segundo byte es un firmado Número de 8 bits, por lo que el salto más corto en x86 está a +/- 127 bytes de distancia. Cualquier cosa más allá de +/- 127 bytes de distancia es un salto largo, E9y debe usar la dirección completa de 32 bits; resultando en una instrucción de 5 bytes.

Es importante tener esto en cuenta si está parcheando código ensamblador en línea.

ex.
EB 0 saltaría al código de operación después del salto corto, no a la línea de código en sí.

ex.
EB 7F es el salto más bajo.

valoraciones y reseñas

Si te ha sido de provecho nuestro post, sería de mucha ayuda si lo compartes con el resto seniors de este modo contrubuyes a extender este contenido.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *