who programming language created assembler and binary executable instructions

binary - programming - assembly language history



¿Cómo funcionan exactamente los ejecutables? (4)

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

Gracias.


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")


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 del código de bytes:

B8 02 00

Los códigos de bytes se cargan en la RAM y el procesador los ejecuta, ya que ese es su "idioma". Nadie en su sano juicio que conozca los programas en código de bytes, 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 ejecutable en pocas palabras, sin duda hay libros escritos sobre este tema. No soy un experto en 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.


Los ejecutables son archivos binarios que el sistema operativo entiende. El ejecutable contendrá secciones que tienen datos en ellos. Windows usa el formato PE . El Formato PE tiene una sección que tiene instrucciones de la máquina . 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 (), sería una secuencia de instrucciones que

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 llamadas).

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.


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 sobre la función MessageBox específicamente, pero supongo que son MUCHAS instrucciones. Piénselo: tiene que dibujar el cuadro y darle un estilo, sin embargo, su computadora lo estiliza, 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.