Assembly

Páginas: 6 (1392 palabras) Publicado: 9 de julio de 2014
C´mo compilar programas en C y Assembler
o
Organizaci´n del Computador II
o
Departamento de Computaci´n
o
Facultad de Ciencias Exactas y Naturales
Universidad de Buenos Aires
Segundo cuatrimestre - 2006

1.

Desde los fuentes al ejecutable

Un archivo ejecutable o “un binario” est´ compuesto por numerosas partes y es el resultado
a
de uno o varios archivos fuente. Los archivosfuente pueden ser de diversos tipos, lenguajes,
etc. Por ello, es fundamental conocer c´mo se compila, ensambla y linkea1 un ejecutable, m´s
o
a
a´n, cuando hay que realizar esa labor manualmente.
u

Figura 1: Diagrama del proceso de compilaci´n y ensamblaje
o
B´sicamente, la tarea se divide en dos partes, aunque a veces no lo notemos. La primer
a
parte es la obtenci´n un archivo objeto, apartir de un archivo fuente, la cual se denomina
o
2
compilaci´n o ensamblaje 3 , seg´n el caso. La segunda parte consiste en la combinaci´n de
o
u
o
todos los archivos objeto en un archivo ejecutable, la cual se denomina linkeo. Adem´s, en esa
a
combinaci´n, se define el punto de entrada del programa, que ser´ la primer instrucci´n que
o
a
o
se ejecutar´ del programa final.
a
1“linkear ” es la castellanizaci´n del verbo en ingl´s to link, la cual usaremos vulgarmente como si fuera
o
e
adecuado.
2
compilar. Preparar un programa en el lenguaje m´quina a partir de otro programa de ordenador escrito en
a
otro lenguaje.
3
ensamblar. Preparar un programa en lenguaje m´quina a partir de un programa en lenguaje simb´lico.
a
o

1

Organizaci´n del Computador II
o2.

P´gina 2 de 3
a

Compilando con gcc

Para compilar un archivo escrito en lenguaje C y obtener el archivo objeto utilizaremos el
gcc de la siguiente manera:
gcc -c -o principal.o principal.c
donde principal.c4 es nuestro c´digo fuente en lenguaje C, principal.o es el archivo objeto
o
de destino y -c indica que estamos compilando. En general, el comando -o nombre indica que
elarchivo de destino es nombre .
Si nuestro programa est´ compuesto de m´s de un archivo en lenguaje C, deberemos ejecutar
a
a
una llamada gcc por cada archivo y obtener as´ un objeto para cada uno de ellos.
ı

3.

Ensamblando con nasm
Para ensamblar un archivo en assembler con nasm debemos ejecutar la siguiente instrucci´n:
o

nasm -felf rapidas.asm
donde rapidas.asm es nuestro archivoassembler en cuesti´n y la opci´n -felf indica que el
o
o
formato del archivo objeto ser´ ELF (el m´s com´n para Linux). Aqu´ tambi´n se podr´ haber
a
a
u
ı
e
ıa
utilizado la opci´n -o rapidas.o pero nasm por omisi´n utiliza ese archivo como destino.
o
o
Nuevamente, si tuvi´ramos varios archivos en lenguaje ensamblador que utilizan funciones
e
entre ellos, debemos ensamblarlos porseparado y obtener as´ un archivo objeto para cada.
ı

4.

Linkeando todo para obtener el ejecutable

Existen varios linkers pero aqu´ mostraremos dos de ellos: el ld y el propio gcc. El linker
ı
toma todos los archivos objeto y los combina para formar el ejecutable. Como cada archivo
objeto fue compilado por separado, podr´ haber llamadas a funciones que no est´n en el propio
ıa
aarchivo objeto. Por ejemplo, si nuestro principal.c tiene una llamada a una funci´n que fue
o
programada en lenguaje ensamblador porque necesitaba ser r´pida, la cual est´ definida en
a
a
rapidas.asm, el gcc compila el c´digo que est´ en principal.c y anota en alguna parte del
o
a
archivo objeto que necesita una funci´n con un determinado nombre. Ser´ tarea del linker
o
a
encontrar en qu´archivo objeto fue definida una funci´n con ese nombre y efectivamente
e
o
enlazar esa llamada con la funci´n correcta.
o
De igual modo, en el archivo en lenguaje ensamblador puede haber llamadas a funciones
ajenas a ese archivo, las cuales pueden estar en lenguaje ensablador en otros archivos o bien
en lenguaje C.
En un archivo en lenguaje C, para indicar que la funci´n no est´ en el...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • General Assembly
  • Assembly
  • In Ear Monitor Assembly
  • National assembly for wales
  • Máquina de café
  • Aquastore Assembly guide 1 español
  • What Is A Final Assembly Schedule
  • Assembly Meszclado Con Un Poquito De Caca Liquida

OTRAS TAREAS POPULARES

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS