Informatica

Páginas: 21 (5204 palabras) Publicado: 18 de noviembre de 2012
Grado Informática, 2º Curso

Estructura de Computadores

Prá ctica 2.- Programació n mixta C-asm x86 Linux
1 Resumen de objetivos
Al finalizar esta práctica, se debería ser capaz de:   Usar  las  herramientas  gcc,  as  y  ld  para  compilar  código  C,  ensamblar  código  ASM,  enlazar  ambos  tipos  de  código  objeto,  estudiar  el  código  ensamblador  generado  por  gcc  con y  sin  optimizaciones, localizar el código ASM en‐línea introducido por el programador, y estudiar el  correcto interfaz del mismo con el resto del programa C.   Reconocer la estructura del código generado por gcc según la convención de llamada cdecl.   Reproducir  dicha  estructura  llamando  a  funciones  C  desde  programa  ASM,  y  recibiendo  llamadas desde programa C a subrutinas ASM.  Escribir fragmentos sencillos de ensamblador en‐línea.   Usar la instrucción CALL (con convención  cdecl) desde programas ASM para hacer llamadas al  sistema operativo (kernel Linux, sección 2) y a la librería C (sección 3 del manual).   Enumerar los registros y algunas instrucciones de los repertorios MMX/SSE de la línea x86.   Usar con efectividad un depurador como gdb/ddd.  Argumentar la utilidad de los depuradores para ahorrar tiempo de depuración.   Explicar la convención de llamada cdecl para procesadores x86.   Recordar y practicar en una plataforma de 32bits las operaciones de cálculo de paridad, cálculo  de peso Hamming (population count), suma lateral (de bits o de componentes SIMD enteros) y  producto de matrices. 

2 Convención de llamada cdecl
En  la práctica  anterior  ya  vimos  la  conveniencia  de  dividir  el  código  de  un  programa  entre  varias  funciones, para facilitar su legibilidad y comprensión, además de su reutilización. En la Figura 1 se vuelve  a mostrar la suma de lista de enteros de 32bits, destacando estos tres aspectos que ahora nos interesan:    La dirección de inicio de la lista y su tamaño se le pasa a la función a través de registros.   El resultado se devuelve al programa principal a través del registro EAX.   La subrutina preserva el valor de EDX. 

Probablemente el autor de esta función considere que quien reutilice sus funciones debe aprender qué  registros se deben usar para pasar los argumentos, teniendo garantizado que a la vuelta de la subrutina sólo se habrá modificado el valor del registro EAX, que contiene el valor de retorno de la función.  Se pueden usar varias alternativas para pasar parámetros a funciones y para retornar los resultados de  la función al código que la ha llamado. Se llama convención de llamada (calling convention) al conjunto  de alternativas escogidas (para pasar parámetros y devolver resultados). Corresponde a la convención  determinar, por ejemplo:    Dónde se ponen los parámetros (en registros, en la pila o en ambos).  El orden en que se pasan los parámetros a la función.   o Si es en registros, en cuál se pasa el parámetro 1º, 2º, etc.   o Si es en pila, los parámetros pueden introducirse en el orden en que aparecen en la  declaración de la función (como en Pascal) o al contrario (como se hace en C).    La primera opción exige que el lenguaje sea fuertemente tipificado, y así una función sólo podrá tener un número fijo de argumentos de tipo conocido.   La segunda opción permite un nº variable de argumentos de tipos variables.  Qué registros preserva el código de llamada (invocante) y cuáles la función (código invocado).  o Los primeros (caller‐save, salva‐invocante) pueden usarse directamente en la función.  o Los  segundos  (callee‐save,  salva‐invocado)  deberían salvarse  a  pila  antes  de  que  la  función los modifique, para poder restaurar su valor antes de retornar al invocante. 



 
Estructura de Computadores    1 



Quién libera el espacio reservado en la pila para el paso de parámetros: el código de llamada  (invocante, como en C) o la función (código invocado, como en Pascal).  o...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Informatica
  • Informatica
  • Informatica
  • Informatica
  • Informatica
  • Informática
  • Informatica
  • Informatica

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS