Pregunta

Sé que los ejecutables contienen instrucciones, pero ¿qué son exactamente estas instrucciones? Si quiero llamar a la función API MessageBox , por ejemplo, ¿cómo es la instrucción?

Gracias.

¿Fue útil?

Solución

Executables son archivos binarios que el sistema operativo entiende. El ejecutable contendrá secciones que tienen datos en ellos. Windows utiliza el formato PE . El Formato PE tiene una sección que tiene instrucciones de máquina . Estas instrucciones son solo números que están ordenados en una secuencia y son entendidos por la CPU.

Una llamada de función a MessageBox (), sería una secuencia de instrucciones que lo hará

1) tiene la dirección de la función que está en una DLL. Esta dirección es puesta por el compilador

2) instrucciones para " empujar " los parámetros en una pila

3) La llamada a la función real

4) algún tipo de limpieza (depende de la convención de llamada).

Es importante recordar que los archivos EXE son solo archivos especialmente formateados. No tengo un desmontaje para usted, pero puede intentar compilar su código y luego abrir su EXE en Visual Studio para ver el desensamblaje.

Otros consejos

Esa es una pregunta hinchada si alguna vez he visto una. PERO, haré mi mejor esfuerzo para dar una visión general. En un ejecutable binario hay estas cosas llamadas "códigos de bytes", los códigos de bytes son simplemente la reprimación hexadecimal de una instrucción. Comúnmente puede " buscar arriba " Códigos de byte y convertirlos a instrucciones de montaje. Por ejemplo: La instrucción:

mov ax, 2h

Tiene la representación del código byte:

B8 02 00

Los códigos de bytes se cargan en la RAM y son ejecutados por el procesador, ya que ese es su "idioma". Nadie en su sano juicio que conozca los programas en código de bytes, simplemente sería demasiado complicado. El montaje es ... lo suficientemente divertido como es. Cada vez que compile un programa en un lenguaje de nivel superior tiene que tomar su código y convertirlo en instrucciones de ensamblaje, simplemente imagina cómo quedaría dañado su código después de compilarlo. No me entiendas mal, los compiladores son geniales, pero desarma un programa C ++ con IDA Pro Freeware y verás de lo que estoy hablando. Eso es ejecutables en pocas palabras, ciertamente hay libros escritos sobre este tema. No soy un experto en API de Windows, pero alguien más puede mostrarle cómo se vería la instrucción para llamar a la API de Windows "MessageBox". Solo deben ser unas pocas líneas de montaje.

Cualquiera que sea el código escrito (ya sea en C o en otro idioma) es compilado por un compilador a un tipo especial de lenguaje llamado ensamblaje (bueno, código de máquina, pero están muy cerca). Assembly es un lenguaje de muy bajo nivel, que la CPU ejecuta de forma nativa. Normalmente, no se programa en el ensamblaje porque es de tan bajo nivel (por ejemplo, no desea tratar con la extracción de bits de la memoria).

No puedo decir sobre la función MessageBox específicamente, pero supongo que es un LOTE de instrucciones. Piénselo: tiene que dibujar el cuadro, y diseñarlo según el estilo de su computadora, y conectar un controlador par para que algo suceda cuando el usuario hace clic en el botón, le dice a Windows (o al sistema operativo) que lo agregue al barra de tareas (o dock, etc.), y muchas otras cosas.

Depende del idioma en el que estés trabajando. Pero para muchos es tan simple como ...

msgbox("Your message goes here")

o

alert("Your message goes here")
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top