2009-10-24 15 views

Respuesta

10

Executables son archivos binarios que puedan ser entendidos por el sistema operativo. El ejecutable contendrá secciones que tienen datos en ellos. Windows usa el PE format. El Formato PE tiene una sección que tiene instrucciones machine. Estas instrucciones son simplemente números que están ordenados en una secuencia y la CPU los entiende.

una llamada de función a MessageBox(), habría una secuencia de instrucciones que

1) tienen la dirección de la función que se encuentra en un DLL. Esta dirección se pone en el compilador

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

3) La llamada a la función

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

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

+0

Gracias por su respuesta, pero Wikipedia dice que el archivo DLL también usa el formato PE. ¿Porqué es eso? –

+0

¿Y cómo exactamente "empuja" esos parámetros? Sé por PE Explorer que la DLL guarda la función y el tamaño de sus parámetros, por ejemplo, 8 bytes pueden ser int, int. –

+2

Una DLL también puede contener código ejecutable que EXEs puede usar en tiempo de ejecución, de ahí el nombre "biblioteca de enlace dinámico". –

-4

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

msgbox("Your message goes here") 

o

alert("Your message goes here") 
+3

Realmente no creo que entiendas mi pregunta, quise decir después de la compilación, ¿cómo se ven estas instrucciones? –

2

Cualquier código que se escriba (ya sea en C o en otro idioma) es compilado por un compilador a un tipo especial de lenguaje llamado ensamblado (bueno, código de máquina, pero están muy cerca). El ensamblado es un lenguaje de muy bajo nivel, que la CPU ejecuta de forma nativa. Normalmente, no programa en el ensamblaje porque es de tan bajo nivel (por ejemplo, no desea tratar con tirar bits hacia adelante y hacia atrás desde la memoria).

No puedo decir acerca de la función MessageBox específicamente, pero supongo que es un LOTE de instrucciones. Piénselo: tiene que dibujar el cuadro, y estírelo como su computadora lo estime, y conectar un controlador par para que suceda algo cuando el usuario haga 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.

4

Esa es una pregunta inflada si alguna vez vi una. PERO, haré todo lo posible para dar una visión general. En un ejecutable binario hay estas cosas llamadas "códigos de bytes", los códigos de bytes son solo la represión hexadecimal de una instrucción. Por lo general, puede "buscar" códigos de bytes y convertirlos en instrucciones de ensamblaje. Por ejemplo: La instrucción:

mov ax, 2h 

tiene la representación de código de bytes:

B8 02 00 

Los códigos de bytes se cargan en la memoria RAM y ejecutados por la procesadora, ya que es su "lengua".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 compila un programa en un lenguaje de nivel superior tiene que tomar su código y convertirlo en instrucciones de ensamblaje, imagínese lo mal que se verá su código después de compilarlo. No me malinterpreten, los compiladores son geniales, pero desmonte un programa C++ con Freeware IDA Pro y verá de lo que estoy hablando. Eso es ejecutables en pocas palabras, sin duda hay libros escritos sobre este tema. No soy un experto en la API de Windows, pero otra persona puede mostrarle cómo se vería la instrucción para llamar a la API de Windows "MessageBox". Solo deberían ser unas pocas líneas de la Asamblea.

Cuestiones relacionadas