Subrutinas en C

download Subrutinas en C

of 19

Transcript of Subrutinas en C

  • 7/24/2019 Subrutinas en C

    1/19

    SUBRUTINAS EN C

    Elas Mendoza H.

    Diecisieteava Clase

  • 7/24/2019 Subrutinas en C

    2/19

    Metas de Hoy

    Uso de varios archivos para escribir unprograma C

    Compartir variables y etiquetas entre

    los archivos ensamblados Discutir la forma de pasar parmetros

    a funciones en C Discutir la manera de devolver valores

    desde funciones en C !lamar a una subrutina escrita en

    ensamblador desde un programa de C

  • 7/24/2019 Subrutinas en C

    3/19

    Compile y!in"

  • 7/24/2019 Subrutinas en C

    4/19

    Compile y !in"

    Compilador #compiler$ Un compilador traduce el c%digo fuente parecido al

    &ngl's que el ser humano puede entender en c%digosbinarios #archivos de ob(etos$ que una computadorapueda entender.

    Cuando varios archivos fuente se utilizan) no hayreferencias cruzadas entre archivos de c%digo fuente)mientras se estn recopilando. *arte de la informaci%n no puede ser llenado como las

    direcciones de las subrutinas

    Enlazador #lin"er$ Un enlazador lee el#los$ archivo#s$ ob(eto y los combina

    en un archivo e(ecutable. &nformaci%n incompleta se llena durante el proceso de

    vinculaci%n

  • 7/24/2019 Subrutinas en C

    5/19

    Compartir Etiquetas entre losarchivos Ensamblados+DE, y +-E,+DE, y +-E,*ara compartir una etiqueta) deben suceder dos cosas

    El archivo que declara la etiqueta debe indicarle alensamblador que ser global)

    olo un archivo puede hacerlo para una etiqueta /nica.Cualquier archivo que quiere usar la etiqueta prede0nidacomo global deber preguntar por ella e1plcitamente.

    2res pasos para hacer esto El archivo que crea la etiqueta la declara normalmente)

    por e(emplo) mediante el etiquetado de una lnea en unsubprograma) una declaraci%n D.3) etc

    El archivo que crea la etiqueta hace que sea global conla

    +DE,+DE, 2odos los dems archivos que desean utilizar el valor de

    la etiqueta global se enlaza a 'l con una

    +-E,+-E,

  • 7/24/2019 Subrutinas en C

    6/19

    EJEMPLO

  • 7/24/2019 Subrutinas en C

    7/19

    E(emplo

  • 7/24/2019 Subrutinas en C

    8/19

    ubrutinas

    4alor de -etorno Una subrutina en C puede devolver un valor) o

    5void6 #vacio$ si no es necesario un valor deretorno

    De0nici%n 7 declaraci%n !a subrutina debe ser declaradadeclarada en el archivo quese usa antes que cualquier c%digo la llame

    *rototipo Un prototipo muestra el tipo de valor de retorno yel tipo de valor de retorno y

    los tipos y el orden de los parmetroslos tipos y el orden de los parmetros Ubicaci%n

    !a misma subrutina no necesitan estar en elmismo archivo que la llama.

  • 7/24/2019 Subrutinas en C

    9/19

    E(emplo

  • 7/24/2019 Subrutinas en C

    10/19

    !a utilizaci%n de subrutinas deEnsamblador en C &nstrucciones en lnea de Ensamblado

    asm#5cli8$9 7: habilita la interrupci%n global :7 ubrutinas en Ensamblado se escriben a menudo en

    archivos separados de modo que el ensamblado en lnea nose utiliza.

    *asos bsicos para el uso de las subrutinas de ensambladoren C Escriba la subrutina en un archivo de ensamblador) como

    sub0le.asm En el archivo ensamblado) utilice una directiva +DE, para el

    nombre de la subrutina. Escribir el programa en C que llama en un archivo de C) como

    main.c En el archivo de C) utilice una lnea declaraci%n de una funci%n

    con el mismo nombre que la subrutina en Ensamblador ;otasrden del *aso del *armetro Estilo C