Programa escrito en lenguaje Ensamblador Assembler Vs Programa
Programa escrito en lenguaje Ensamblador (Assembler) Vs Programa escrito en lenguaje C Problema a Resolver: mostrar por pantalla el mensaje “Hola Mundo!” ISFDy. T Nº 189 – Programación I – Lic. Guillermo R. Cherencio
El mismo problema resuelto en Ensamblador y C Ensamblador (Macro Assembler). MODEL SMALL. STACK. CODE START: JMP BEGIN My. Message db "Hola Mundo!$" BEGIN: MOV DX, OFFSET My. Message MOV AX, SEG My. Message MOV DS, AX MOV AH, 9 MOV AX, 4 c 00 h INT 21 h END START Lenguaje C (GCC) #include <stdio. h> main() { printf(“Hola Mundo!”); } Código de Máquina Llamada a API del S. O. para imprimir carácter en pantalla ISFDy. T Nº 189 – Programación I – Lic. Guillermo R. Cherencio
Compilación. MODEL SMALL. STACK. CODE START: JMP BEGIN My. Message db "Hola Mundo!$" BEGIN: MOV DX, OFFSET My. Message MOV AX, SEG My. Message MOV DS, AX MOV AH, 9 MOV AX, 4 c 00 h INT 21 h END START #include <stdio. h> main() { printf(“Hola Mundo!”); } COMPILADOR LENGUAJE C (GCC) COMPILADOR ENSAMBLADOR (MACRO ASSEMBLER) 11100011010100011100110011000110001110001111111110011010101010101 Lenguaje de Máquina ISFDy. T Nº 189 – Programación I – Lic. Guillermo R. Cherencio
Compilación y Linkedición PROGRAMA FUENTE (SOURCE) COMPILADOR LIBRERIAS o BIBLIOTECAS PROGRAMA COMPILADO (OBJETO) Ejemplo de Compilación y Linkedición en Lenguaje C gcc -o p 1. exe p 1. c Ejecutable LINKEDITOR 11100011010100011100110001110001111110011010101 ISFDy. T Nº 189 – Programación I – Lic. Guillermo R. Cherencio PROGRAMA EJECUTABLE Fuente
Compilación y Linkedición en Lenguaje C Ejecutable gcc -o p 1. exe Compilado gcc -c -o p 1. c Fuente p 1. c ISFDy. T Nº 189 – Programación I – Lic. Guillermo R. Cherencio Fuente
Compilación en Lenguaje C PROGRAMA FUENTE (SOURCE) *. c Se resuelven las sentencias de tipo #. . . Ej: #define, #include y luego se compila 1º) PREPROCESADOR *. h 2º) COMPILADOR Proceso de Compilación “en dos pasadas” ISFDy. T Nº 189 – Programación I – Lic. Guillermo R. Cherencio PROGRAMA COMPILADO (OBJETO) *. obj *. o
Linkedición • Núcleo Lenguaje C (ANSI) • De Terceros • Propias *. lib *. a Reutilización de código *. obj *. o Ejemplo de Compilación y Linkedición en Lenguaje C, usando una librería propia (libmycode. a) gcc -o p 1. exe p 1. c -lmycode LIBRERIAS o BIBLIOTECAS PROGRAMA COMPILADO (OBJETO) Librería Ejecutable LINKEDITOR 11100011010100011100110001110001111110011010101 ISFDy. T Nº 189 – Programación I – Lic. Guillermo R. Cherencio Fuente PROGRAMA EJECUTABLE *. exe
Ensamblado de Librerías estáticas Objetos standard. Escritos en distintos lenguajes. Ejemplo de Ensamblado de Librería estática *. obj *. o ar rcs libmycode. a prog 1. o prog 2. o LIB. EXE (DOS, WIN) ar (UNIX, LINUX) Objetos con funciones PROGRAMAS COMPILADOS (OBJETOS) Librería a crear Administrador de Librería ADMNISTRADOR DE LIBRERIA *. lib *. a LIBRERÍA ISFDy. T Nº 189 – Programación I – Lic. Guillermo R. Cherencio Librería estática lista para ser usada en distintos proyectos
- Slides: 8