stringtranslate.com

INT (instrucción x86)

INT es una instrucción en lenguaje ensamblador para procesadores x86 que genera una interrupción de software . Toma el número de interrupción formateado como un valor de byte . [1]

Cuando está escrita en lenguaje ensamblador, la instrucción se escribe así:

INT X

¿Dónde Xestá la interrupción de software que se debe generar (0-255)?

Como es habitual en la aritmética binaria de máquina, los números de interrupción suelen escribirse en forma hexadecimal , que puede indicarse con un prefijo 0x o con el sufijo h . Por ejemplo, INT 13Hgenerará la vigésima interrupción de software (0x13 es diecinueve (19) en notación hexadecimal y el recuento comienza en 0), lo que provocará que se ejecute la función señalada por el vigésimo vector en la tabla de interrupciones .

INT se usa ampliamente en modo real . En modo protegido , INT es una instrucción privilegiada . [1]

modo real

Al generar una interrupción de software , el procesador llama a una de las 256 funciones señaladas por la tabla de direcciones de interrupción, que se encuentra en los primeros 1024 bytes de memoria mientras está en modo real (ver Vector de interrupción ). Por lo tanto, es completamente posible utilizar una instrucción de llamada remota para iniciar la función de interrupción manualmente después de presionar el registro de bandera.

Un ejemplo de una interrupción útil del software DOS fue la interrupción 0x21. Al llamarlo con diferentes parámetros en los registros (principalmente ah y al), puede acceder a varias operaciones de E/S, salida de cadenas y más. [2]

La mayoría de los sistemas Unix y derivados no utilizan interrupciones de software , con la excepción de la interrupción 0x80, utilizada para realizar llamadas al sistema . Esto se logra ingresando un valor de 32 bits correspondiente a una función del núcleo en el registro EAX del procesador y luego ejecutando INT 0x80.

INT3

La instrucción INT3  es una instrucción de un byte definida para que la utilicen los depuradores para reemplazar temporalmente una instrucción en un programa en ejecución con el fin de establecer un punto de interrupción del código . Las instrucciones INT XXh más generales se codifican utilizando dos bytes. Esto los hace inadecuados para su uso en instrucciones de parcheo (que pueden tener una longitud de un byte); ver SIGTRAP .

El código de operación para INT3 es 0xCC, a diferencia del código de operación para INT inmediato8 , que es . Dado que el código de operación dedicado tiene algunas propiedades especiales deseadas para la depuración, que no son compartidas por el código de operación normal de dos bytes para un INT3, los ensambladores normalmente no generan el código de operación genérico a partir de mnemónicos. [1]0xCD immediate80xCC0xCD 0x03

EN

La instrucción INTO  es otra instrucción de un byte. Es una interrupción condicional que se activa cuando se establece el indicador de desbordamiento en el momento de ejecutar este código de operación. Esto indica implícitamente la interrupción n.° 4.

El código de operación para INTO es 0xCE, sin embargo, no está disponible en modo x86-64.

Ver también

Referencias

  1. ^ abc Manual del desarrollador de software de arquitecturas Intel® 64 e IA-32 (PDF) . vol. 2. Corporación Intel . Marzo de 2024. p. 3-520 . Consultado el 23 de mayo de 2024 .
  2. ^ Definición de: int 21