ac 17 subrutinasarc imp

Upload: rafael-saez-ventura

Post on 08-Jan-2016

216 views

Category:

Documents


0 download

DESCRIPTION

a

TRANSCRIPT

  • AclaracionesPaso de parametros

    Llamada a funciones

    Arquitectura de ComputadorasSubrutinas

    Oscar Alvarado Nava

    [email protected]

    Departamento de ElectronicaDivision de Ciencias Basicas e Ingeniera

    Universidad Autonoma Metropolitana, Unidad Azcapotzalco

    15-Primavera, junio de 2015

    Oscar Alvarado Nava UAM Azcapotzalco Subrutinas 1/22

  • AclaracionesPaso de parametros

    Llamada a funciones

    Contenido

    1 AclaracionesFunciones, procedimientos y subrutinasCompilacion

    2 Paso de parametrosRegistrosZona de memoriaPila

    3 Llamada a funcionesFunciones independientesAnidamiento de funciones

    Oscar Alvarado Nava UAM Azcapotzalco Subrutinas 2/22

  • AclaracionesPaso de parametros

    Llamada a funciones

    Funciones, procedimientos y subrutinasCompilacion

    Aclaraciones

    Funcion

    Procedimiento

    Subprograma

    Subrutina

    Oscar Alvarado Nava UAM Azcapotzalco Subrutinas 3/22

  • AclaracionesPaso de parametros

    Llamada a funciones

    Funciones, procedimientos y subrutinasCompilacion

    Funcion

    Secuencia de sentencias a las que se le invoca con un soloindentificador

    Pueden o no recibir parametros y pueden regresar o noresultados

    De acuerdo al lenguaje

    El paso de parametros y el resultado se puede hacer por valor(copia de valores) y/o por apuntadores (direcciones dememoria explcita)

    Oscar Alvarado Nava UAM Azcapotzalco Subrutinas 4/22

  • AclaracionesPaso de parametros

    Llamada a funciones

    Funciones, procedimientos y subrutinasCompilacion

    Procedimiento

    Secuencia de sentencias a las que se le invoca con un soloindentificador

    No reciben parametros y no regresan resultados de maneraexplcita

    De acuerdo al lenguaje

    Los parametros y el resultado se acceden por referencia(direccion de memoria, con manejo implcito)

    Oscar Alvarado Nava UAM Azcapotzalco Subrutinas 5/22

  • AclaracionesPaso de parametros

    Llamada a funciones

    Funciones, procedimientos y subrutinasCompilacion

    Subrutina

    Secuencia de instrucciones a las que se le accede por medio debifurcaciones o saltos

    Pueden o no recibir parametros y pueden regresar o noresultados

    El paso de parametros y el resultado se puede hacer por mediode registros, una zona de memoria estatica o por una zona dememoria dinamica

    Oscar Alvarado Nava UAM Azcapotzalco Subrutinas 6/22

  • AclaracionesPaso de parametros

    Llamada a funciones

    Funciones, procedimientos y subrutinasCompilacion

    Funcion en C

    1 /* Declaracion */2 int suma(int , int);34 /* Definicion */5 int suma(int a, int b)6 {7 int c;8 c = a + b;9 return c;

    10 }11 int main()12 {13 int x=53;14 int y=10;15 int z=0;1617 /* Llamada */18 z = suma(x, y);1920 return 0;21 }

    Oscar Alvarado Nava UAM Azcapotzalco Subrutinas 7/22

  • AclaracionesPaso de parametros

    Llamada a funciones

    Funciones, procedimientos y subrutinasCompilacion

    Compilacion

    oskr@kro:$ gcc -S funcion.c -o funcion.asm

    Oscar Alvarado Nava UAM Azcapotzalco Subrutinas 8/22

  • AclaracionesPaso de parametros

    Llamada a funciones

    Funciones, procedimientos y subrutinasCompilacion

    Subrutina en x86 (1/2)

    1 .file "funcion.c"2 .text3 .globl suma4 .type suma , @function5 suma:6 .LFB0:7 .cfi_startproc8 pushl %ebp9 .cfi_def_cfa_offset 8

    10 .cfi_offset 5, -811 movl %esp , %ebp12 .cfi_def_cfa_register 513 subl $16 , %esp14 movl 12( %ebp), %eax15 movl 8( %ebp), %edx16 addl %edx , %eax17 movl %eax , -4( %ebp)18 movl -4( %ebp), %eax19 leave20 .cfi_restore 521 .cfi_def_cfa 4, 422 ret23 .cfi_endproc24 .LFE0:

    Oscar Alvarado Nava UAM Azcapotzalco Subrutinas 9/22

  • AclaracionesPaso de parametros

    Llamada a funciones

    Funciones, procedimientos y subrutinasCompilacion

    Subrutina en x86 (2/2)

    25 .size suma , .-suma26 .globl main27 .type main , @function28 main:29 .LFB1:30 .cfi_startproc31 pushl %ebp32 .cfi_def_cfa_offset 833 .cfi_offset 5, -834 movl %esp , %ebp35 .cfi_def_cfa_register 536 subl $24 , %esp37 movl $53 , -4( %ebp)38 movl $10 , -8( %ebp)39 movl $0, -12( %ebp)40 movl -8( %ebp), %eax41 movl %eax , 4( %esp)42 movl -4( %ebp), %eax43 movl %eax , ( %esp)44 call suma45 movl %eax , -12( %ebp)46 movl $0, %eax47 leave48 .cfi_restore 549 .cfi_def_cfa 4, 450 ret51 .cfi_endproc52 .LFE1:53 .size main , .-main54 .ident "GCC: (Debian 4.7.2 -5) 4.7.2"55 .section .note.GNU -stack ,"",@progbitsOscar Alvarado Nava UAM Azcapotzalco Subrutinas 10/22

  • AclaracionesPaso de parametros

    Llamada a funciones

    Funciones, procedimientos y subrutinasCompilacion

    Subrutina en ARC (2/2)

    1 .begin2 .macro push arg3 add %r14 , -4, %r144 st arg , %r145 .endmacro6 .macro pop arg7 ld [ %r14], arg8 addcc %r14 , 4, %r149 .endmacro

    10 .org 204811 main:ld [stack], %r1412 ld [x], %r113 ld [y], %r214 push %r1515 push %r116 push %r217 call suma18 pop %r319 st %r3, [z]20 jmpl %r15+4, %r021 suma:pop %r1122 pop %r1223 addcc %r11, %r12, %r1324 push %r1325 jmpl %r15+4, %r026 x:5327 y:1028 z:029 stack: 0x0000A4030 .endOscar Alvarado Nava UAM Azcapotzalco Subrutinas 11/22

  • AclaracionesPaso de parametros

    Llamada a funciones

    Funciones, procedimientos y subrutinasCompilacion

    Proceso de subrutinas

    1 Paso de parametros, si los hay

    2 Paso del control

    3 Recuperacion de parametros en subrutina

    4 Ejecucion de instrucciones de la subrutina

    5 Paso de un valor o resultado, si lo hay

    6 Regreso del control a la instruccion inmediatamente siguientea la que genero la llamada

    7 Recuperacion del valor resultado, si lo hay

    Oscar Alvarado Nava UAM Azcapotzalco Subrutinas 12/22

  • AclaracionesPaso de parametros

    Llamada a funciones

    Funciones, procedimientos y subrutinasCompilacion

    Estructura de subrutinas

    callsuma

    Envodeparmetros

    Llamada

    Recuperacinderesultado

    suma: Recuperacindeparmetros

    Envoderesultado

    Oscar Alvarado Nava UAM Azcapotzalco Subrutinas 13/22

  • AclaracionesPaso de parametros

    Llamada a funciones

    RegistrosZona de memoriaPila

    Por medio de registros

    ...

    ld [x], %r1

    ld [y], %r2

    call suma

    st %r3, [z]...

    !subrutina

    suma: addcc %r1, %r2, %r3

    jmpl %r15+4, %r0...

    x: 53

    y: 10

    z: 0

    Oscar Alvarado Nava UAM Azcapotzalco Subrutinas 14/22

  • AclaracionesPaso de parametros

    Llamada a funciones

    RegistrosZona de memoriaPila

    Por medio de una zona de enlace en memoria

    .

    .

    .

    st %r1, [x]

    st %r2, [x+4]

    sethi x %r5

    srl 10, %r5

    call suma

    ld [x+8], %r3

    .

    .

    .

    !subrutina

    suma: ld %r5, %r8

    ld %r5+4, %r9

    addcc %r8, %r9, %r10

    st %r10, %r5+8

    jmpl %r15+4, %r0

    .

    .

    .

    !Datos

    x: .dwb 3

    Oscar Alvarado Nava UAM Azcapotzalco Subrutinas 15/22

  • AclaracionesPaso de parametros

    Llamada a funciones

    RegistrosZona de memoriaPila

    Por medio de una pila

    %sp .eq %r14

    .

    .

    .

    addcc %sp, -4 %sp

    st %r1, %sp

    addcc %sp, -4 %sp

    st %r2, %sp

    call suma

    ld %sp, %r3

    addcc %sp, 4 %sp

    .

    .

    .

    !subrutina

    suma: ld %sp, %r8

    addcc %sp, 4 %sp

    ld %sp, %r9

    addcc %r8, %r9, %r10

    st %r10, %sp

    jmpl %r15+4, %r0

    .

    .

    .

    Oscar Alvarado Nava UAM Azcapotzalco Subrutinas 16/22

  • AclaracionesPaso de parametros

    Llamada a funciones

    RegistrosZona de memoriaPila

    Macro instrucciones

    .macro push arg1

    addcc %14, -4 %r14

    st arg1, %14

    .endmacro

    .macro pop arg1

    ld %r14, arg1

    addcc %14, 4 %r14

    .endmacro

    Oscar Alvarado Nava UAM Azcapotzalco Subrutinas 17/22

  • AclaracionesPaso de parametros

    Llamada a funciones

    RegistrosZona de memoriaPila

    Por medio de una pila, con macro-instrucciones

    ...

    push %r1

    push %r2

    call suma

    pop %r3...

    !subrutina

    suma: pop %r8

    pop %r9

    addcc %r8, %r9, %r10

    push %r10

    jmpl %r15+4, %r0...

    Oscar Alvarado Nava UAM Azcapotzalco Subrutinas 18/22

  • AclaracionesPaso de parametros

    Llamada a funciones

    RegistrosZona de memoriaPila

    Llama a funciones en C

    1 int main()2 {3 int w,z;4 w = fun1 (1,2);5 z = fun2 (10);6 return 0;7 }8 int fun1(int x, int y)9 {

    10 int i,j;11 i = x * x;12 j = i + y;13 return j;14 }15 int fun2(int a)16 {17 int m,n;18 n = a + 5;19 m = fun1(a,n);20 return m;21 }

    232

    0

    10

    %r15

    n

    115sp

    m

    Oscar Alvarado Nava UAM Azcapotzalco Subrutinas 19/22

  • AclaracionesPaso de parametros

    Llamada a funciones

    Funciones independientesAnidamiento de funciones

    Llamada a una funcion

    %pc %r150x20 0x18

    ...0x10 push %r10x14 push %r20x18 call suma0x1c pop %r30x20 orcc %r3 %r1 %r4

    ...0x40 suma: pop %r80x44 pop %r90x48 addcc %r8, %r9, %r100x4c push %r100x50 jmpl %r15+4, %r0

    ...

    Oscar Alvarado Nava UAM Azcapotzalco Subrutinas 20/22

  • AclaracionesPaso de parametros

    Llamada a funciones

    Funciones independientesAnidamiento de funciones

    Llamada a dos funciones

    %pc %r150x2c 0x28

    0x10 push %r10x14 push %r20x18 call suma0x1c pop %r30x20 push %r10x24 push %r20x28 call resta0x2c pop %r4

    .

    .

    .0x40 suma: pop %r80x44 pop %r90x48 addcc %r8, %r9, %r100x4c push %r100x50 jmpl %r15+4, %r0

    .

    .

    .0xa0 resta: pop %r80xa4 pop %r90xa8 norcc %r8, %r0, %r80xac addcc %r8, 1, %r80xb0 addcc %r8, %r9, %r100xb4 push %r100xb8 jmpl %r15+4, %r0

    Oscar Alvarado Nava UAM Azcapotzalco Subrutinas 21/22

  • AclaracionesPaso de parametros

    Llamada a funciones

    Funciones independientesAnidamiento de funciones

    Llamada a dos funciones anidadas

    %pc %r150x2c 0x54

    0x10 push %r10x14 push %r20x18 call suma0x1c pop %r3

    .

    .

    .0x40 suma: pop %r80x44 pop %r90x48 addcc %r8, %r9, %r100x4c push %r100x50 push %r90x54 call resta0x58 pop %100x5c push %r100x60 jmpl %r15+4, %r0

    .

    .

    .0xa0 resta: pop %r80xa4 pop %r90xa8 norcc %r8, %r0, %r80xac addcc %r8, 1, %r80xb0 addcc %r8, %r9, %r100xb4 push %r100xb8 jmpl %r15+4, %r0

    Oscar Alvarado Nava UAM Azcapotzalco Subrutinas 22/22

    AclaracionesFunciones, procedimientos y subrutinasCompilacin

    Paso de parmetrosRegistrosZona de memoriaPila

    Llamada a funcionesFunciones independientesAnidamiento de funciones