La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Arquitectura de Computadores Clase 13 Subrutinas y Manejo de Stack IIC 2342 Semestre 2008-2 Rubén Mitnik Pontificia Universidad Católica de Chile Escuela.

Presentaciones similares


Presentación del tema: "Arquitectura de Computadores Clase 13 Subrutinas y Manejo de Stack IIC 2342 Semestre 2008-2 Rubén Mitnik Pontificia Universidad Católica de Chile Escuela."— Transcripción de la presentación:

1 Arquitectura de Computadores Clase 13 Subrutinas y Manejo de Stack IIC 2342 Semestre 2008-2 Rubén Mitnik Pontificia Universidad Católica de Chile Escuela de Ingeniería Departamento de Ciencia de la Computación

2 Objetivos Capítulo 4 : Unidad de Procesamiento Central (CPU) Entender cómo se implementan las funciones de alto nivel como subrutinas en bajo nivel. Entender la lógica del paso de parámetros, retorno de resultados, y almacenamiento de direcciones de retorno en subrutinas. Objetivos R.Mitnik 2Arquitectura de Computadores

3 R.Mitnik Arquitectura de Computadores3 Índice Capítulo 4 : Unidad de Procesamiento Central (CPU) 4.1 Partes de la CPU. 4.2 Conjunto de Instrucciones y tipos de funcionalidad. 4.3 Ciclo de la Instrucción. 4.4 Diseño de una CPU básica. 4.5 Modos de direccionamiento. 4.6 Instrucciones en lenguaje de máquina. 4.7 Subrutinas y Manejo de Stack. 4.8 Interrupciones de software y hadware. 4.9 CISC/RISC.

4 Subrutinas Trozos de código con funcionalidad predeterminada R.Mitnik Arquitectura de Computadores4 ¿Cómo implementamos funciones a bajo nivel? ¿ Cómo implementamos funciones a bajo nivel? R.Mitnik 4Arquitectura de Computadores Capítulo 4 : Unidad de Procesamiento Central (CPU) – Subrutinas y manejo del Stack Subrutinas

5 R.Mitnik Arquitectura de Computadores5 Subrutinas Requisitos de una función Código de su implementación Dirección de retorno Parámetros Retornar resultados Capítulo 4 : Unidad de Procesamiento Central (CPU) – Subrutinas y manejo del Stack

6 R.Mitnik Arquitectura de Computadores6 Subrutinas Requisitos de una función Código de su implementación Dirección de retorno Parámetros Retornar resultados Capítulo 4 : Unidad de Procesamiento Central (CPU) – Subrutinas y manejo del Stack

7 Inicio subrutina Salida de subrutina Datos y resultado Instrucciones Codigo de implementación: Precauciones Capítulo 4 : Unidad de Procesamiento Central (CPU) – Subrutinas y manejo del Stack ¿Qué pasa si el programa principal estaba utilizando el registro Ac? kaput!! Solución: Se usa el Stack (pila) Push Ac // guarda Ac en la pila LDA zero … Pop Ac // recupera el valor de Ac de la pila RTS

8 Capítulo 4 : Unidad de Procesamiento Central (CPU) – Subrutinas y manejo del Stack R.Mitnik Arquitectura de Computadores8 Subrutinas Requisitos de una función Código de su implementación Kaput! Dirección de retorno Parámetros Retornar resultados

9 Capítulo 4 : Unidad de Procesamiento Central (CPU) – Subrutinas y manejo del Stack R.Mitnik Arquitectura de Computadores9 Subrutinas Requisitos de una función Código de su implementación Dirección de retorno Parámetros Retornar resultados

10 Capítulo 4 : Unidad de Procesamiento Central (CPU) – Subrutinas y manejo del Stack R.Mitnik Arquitectura de Computadores10 Subrutinas Requisitos de una función Código de su implementación Dirección de retorno Registros Stack Parámetros Retornar resultados

11 R.Mitnik Arquitectura de Computadores11 Capítulo 4 : Unidad de Procesamiento Central (CPU) – Subrutinas Dirección de retorno Al llamar a una subrutina se carga un registro con la dirección de retorno de ésta. Al retornar, carga el Program Counter (o Instruction Pointer) con el valor de dicho registro. Desventajas Se dificulta la anidación de subrutinas Se dificulta la implementación de funciones recursivas Pierdo utilización de un registro Ventajas Simpleza Registros

12 R.Mitnik Arquitectura de Computadores12 Capítulo 4 : Unidad de Procesamiento Central (CPU) – Subrutinas Al llamar a una subrutina hago PUSH del valor del Program Counter (o Instruction Pointer) Al retornar, hace POP del valor almacenado cargándolo de vuelta en el Program Counter. Desventajas Requiere manejar el stack Ventajas Anidación de subrutinas (incluso recursivas) se logra de manera transparente. Stack Dirección de retorno

13 R.Mitnik Arquitectura de Computadores13 F3h F4h F5h F6h F7h F8h F9h FAh FBh FCh FDh### FEh### FFh### Stack Dirección de retorno por Stack Capítulo 4 : Unidad de Procesamiento Central (CPU) – Subrutinas Stack Pointer Program Counter A0h A1h A2h A3hCALL SUB A4hNext Instr. A5h A6h A7h A4h C2hSubroutine C3hCode C4h… C5h… C6hReturn ¿Qué ocurre al llamar una subrutina?

14 R.Mitnik Arquitectura de Computadores14 F3h F4h F5h F6h F7h F8h F9h FAh FBh FChA4h FDh### FEh### FFh### Stack Dirección de retorno por Stack Capítulo 4 : Unidad de Procesamiento Central (CPU) – Subrutinas Stack Pointer Program Counter A0h A1h A2h A3hCALL SUB A4hNext Instr. A5h A6h A7h C2hSubroutine C3hCode C4h… C5h… C6hReturn ¿Qué ocurre al volver de una subrutina?

15 Capítulo 4 : Unidad de Procesamiento Central (CPU) – Subrutinas y manejo del Stack R.Mitnik Arquitectura de Computadores15 Subrutinas Requisitos de una función Código de su implementación Dirección de retorno Parámetros Retornar resultados

16 Capítulo 4 : Unidad de Procesamiento Central (CPU) – Subrutinas y manejo del Stack R.Mitnik Arquitectura de Computadores16 Subrutinas Requisitos de una función Código de su implementación Dirección de retorno Parámetros Registros Stack Retornar resultados

17 R.Mitnik Arquitectura de Computadores17 Capítulo 4 : Unidad de Procesamiento Central (CPU) – Subrutinas Paso de parámetros Antes de llamar a subrutina cargo registros con los parámetros Debo conocer que registros ocupa la subrutina La subrutina lee los registros Desventajas Número limitado de registros Ventajas Rapidez Simpleza Registros

18 R.Mitnik Arquitectura de Computadores18 Capítulo 4 : Unidad de Procesamiento Central (CPU) – Subrutinas Paso de parámetros Antes de llamar a subrutina hago PUSH de los parámetros Debo saber en que orden mandarlos Desventajas Complejo Requiere mayor coordinación Ventajas Mayor espacio Stack

19 R.Mitnik Arquitectura de Computadores19 F3h F4h F5h F6h F7h F8h F9h FAh FBh FCh FDh### FEh### FFh### Stack Paso de parámetros por Stack Capítulo 4 : Unidad de Procesamiento Central (CPU) – Subrutinas Stack Pointer Program Counter A0h A1hPUSH A A2hPUSH B A3hCALL SUB A4hPOP A5hPOP A6hNext Instr. A7h A C2hSubroutine C3hCode C4h… C5h… C6hReturn ¿Cómo paso los parámetros a una subrutina? B A4h ¿Cómo accedo a los parámetros en la subrutina? No puedo usar “POP”  Hay que direccionar Ej: (SP+2) obtengo B (SP+3) obtengo A

20 ¿Qué pasa si hago otros PUSH en la subrutina? R.Mitnik Arquitectura de Computadores20 F3h F4h F5h F6h F7h F8h F9h FAhA4h FBhB FChA FDh### FEh### FFh### Stack Paso de parámetros por Stack Capítulo 4 : Unidad de Procesamiento Central (CPU) – Subrutinas Program Counter A0h A1hPUSH A A2hPUSH B A3hCALL SUB A4hPOP A5hPOP A6hNext Instr. A7h C2hSubroutine C3hCode C4h… C5h… C6hReturn ¿Cómo paso los parámetros a una subrutina? Cambia el direccionamiento Ej: (SP+4) obtengo B (SP+5) obtengo A dato Stack Pointer

21 ¿Qué pasa si en la subrutina hago if(condición) PUSH;? R.Mitnik Arquitectura de Computadores21 F3h F4h F5h F6h F7h F8hdato F9hdato FAhA4h FBhB FChA FDh### FEh### FFh### Stack Paso de parámetros por Stack Capítulo 4 : Unidad de Procesamiento Central (CPU) – Subrutinas Program Counter A0h A1hPUSH A A2hPUSH B A3hCALL SUB A4hPOP A5hPOP A6hNext Instr. A7h C2hSubroutine C3hCode C4h… C5h… C6hReturn ¿Cómo paso los parámetros a una subrutina? Perdí el direccionamiento Ej: (SP+???) obtengo B (SP+???) obtengo A Stack Pointer Usamos otro puntero  Base Pointer (registro)

22 R.Mitnik Arquitectura de Computadores22 F3h F4h F5h F6h F7hdato F8hdato F9hFFh FAhA4h FBhB FChA FDh### FEh### FFh### Stack Paso de parámetros por Stack Capítulo 4 : Unidad de Procesamiento Central (CPU) – Subrutinas Program Counter A0h A1hPUSH A A2hPUSH B A3hCALL SUB A4hPOP A5hPOP A6hNext Instr. A7h C2hSubroutine C3hCode C4h… C5h… C6hReturn ¿Cómo paso los parámetros a una subrutina? Stack Pointer Base Pointer Direccionamos por BP Ej: (BP+2) obtengo B (BP+3) obtengo A Frame (marco) de la subrutina actual Frame (marco) de la subrutina anterior

23 R.Mitnik Arquitectura de Computadores23 F3h F4h F5h F6h F7h F8h F9h FAh FBh FCh FDh### FEh### FFh### Stack Paso de parámetros por Stack Capítulo 4 : Unidad de Procesamiento Central (CPU) – Subrutinas Stack Pointer Program Counter A0h A1hPUSH A A2hPUSH B A3hCALL SUB A4hPOP A5hPOP A6hNext Instr. A7h A C2hSubroutine C3hCode C4h… C5h… C6hReturn ¿Cómo paso los parámetros a una subrutina? B A4h Base Pointer FFh

24 R.Mitnik Arquitectura de Computadores24 F3h F4h F5h F6h F7hdato F8hdato F9hFFh FAhA4h FBhB FChA FDh### FEh### FFh### Stack Paso de parámetros por Stack Capítulo 4 : Unidad de Procesamiento Central (CPU) – Subrutinas Program Counter A0h A1hPUSH A A2hPUSH B A3hCALL SUB A4hPOP A5hPOP A6hNext Instr. A7h C2hSubroutine C3hCode C4h… C5h… C6hReturn ¿Cómo retorno de la subrutina? Stack Pointer Base Pointer SP = BP-1 POP BP // BP = (SP) POP PC // PC = (SP)

25 R.Mitnik Arquitectura de Computadores25 F3h F4h F5h F6h F7h F8h F9h FAh FBh FCh FDh### FEh### FFh### Stack Paso de parámetros por Stack Capítulo 4 : Unidad de Procesamiento Central (CPU) – Subrutinas Program Counter A0h A1hPUSH A A2hPUSH B A3hCALL SUB A4hPOP A5hPOP A6hNext Instr. A7h C2hSubroutine C3hCode C4h… C5h… C6hReturn ¿Cómo retorno de la subrutina? Stack Pointer Base Pointer SP = BP-1 POP BP // BP = (SP) POP PC // PC = (SP)

26 Capítulo 4 : Unidad de Procesamiento Central (CPU) – Subrutinas y manejo del Stack R.Mitnik Arquitectura de Computadores26 Subrutinas Requisitos de una función Código de su implementación Dirección de retorno Parámetros Retornar resultados

27 Capítulo 4 : Unidad de Procesamiento Central (CPU) – Subrutinas y manejo del Stack R.Mitnik Arquitectura de Computadores27 Subrutinas Requisitos de una función Código de su implementación Dirección de retorno Parámetros Retornar resultados Registros

28 Capítulo 4 : Unidad de Procesamiento Central (CPU) – Subrutinas y manejo del Stack R.Mitnik Arquitectura de Computadores28 Subrutinas Requisitos de una función Código de su implementación Kaput! Dirección de retorno Registros Stack Parámetros Registros Stack Retornar resultados Registros

29 Resumen Capítulo 4 : Unidad de Procesamiento Central (CPU) Implementación de funciones como subrutinas Código de su implementación Precauciones Dirección de retorno Registros Stack Parámetros Registros Stack Retornar resultados Registros R.Mitnik 29Arquitectura de Computadores Resumen


Descargar ppt "Arquitectura de Computadores Clase 13 Subrutinas y Manejo de Stack IIC 2342 Semestre 2008-2 Rubén Mitnik Pontificia Universidad Católica de Chile Escuela."

Presentaciones similares


Anuncios Google