Download - 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