Ensamblador x86: lazos y procedimientos

Tamaño: px
Comenzar la demostración a partir de la página:

Download "Ensamblador x86: lazos y procedimientos"

Transcripción

1 Ensamblador x86: lazos y procedimientos Lección 5 Ing. Jorge Castro-Godínez MT7003 Microprocesadores y Microcontroladores Área de Ingeniería Mecatrónica Instituto Tecnológico de Costa Rica I Semestre 2014 Jorge Castro-Godínez Ensamblador x86 1 / 52

2 Contenido 1 Lazos o ciclos 2 Jorge Castro-Godínez Ensamblador x86 2 / 52

3 Transformación de lazos o ciclos Cómo transformar lazos de una forma directa? Estar seguro de dónde debe estar (u ocurrir) el salto condicional: al tope o al fondo del lazo. Cómo sería implementar for(i=0;i<100;i++? while ( sum!= 0 ) { <loop body> } looptop: cmpl $0, %eax je loopdone <loop body code> jmp looptop loopdone: Jorge Castro-Godínez Ensamblador x86 3 / 52

4 Lazo do-while Se emplea un salto hacia atrás para continuar con el lazo. Solo toma un salto cuando la condición del while se conserva. int fact_do(int x) { int result = 1; do { result *= x; x = x-1; } while (x > 1); return result; } int fact_goto(int x) { int result = 1; loop: result *= x; x = x-1; if (x > 1) goto loop; return result; } Jorge Castro-Godínez Ensamblador x86 4 / 52

5 Compilación de lazo do-while int fact_goto(int x) { int result = 1; loop: result *= x; x = x-1; if (x > 1) goto loop; %edx x %eax result fact_goto: pushl %ebp # Setup movl,%ebp # Setup movl $1,%eax # eax = 1 movl 8(%ebp),%edx # edx = x.l11: imull %edx,%eax # result *= x decl %edx # x-- cmpl $1,%edx # Compare x : 1 jg.l11 # if > goto loop } return result; movl %ebp, # Finish popl %ebp # Finish ret # Finish Jorge Castro-Godínez Ensamblador x86 5 / 52

6 Traducción del lazo do-while do while ( ); loop: if ( ) goto loop Jorge Castro-Godínez Ensamblador x86 6 / 52

7 Traducción del lazo while int fact_while(int x) { int result = 1; while (x > 1) { result *= x; x = x-1; }; return result; } int fact_while_goto(int x) { int result = 1; goto middle; loop: result *= x; x = x-1; middle: if (x > 1) goto loop; return result; } Jorge Castro-Godínez Ensamblador x86 7 / 52

8 Ejemplo del lazo while int fact_while(int x) { int result = 1; while (x > 1) { result *= x; x--; }; return result; } # x in %edx, result in %eax jmp.l34 # goto Middle.L35: # Loop: imull %edx, %eax # result *= x decl %edx # x--.l34: # Middle: cmpl $1, %edx # x:1 jg.l35 # if >, goto # Loop Jorge Castro-Godínez Ensamblador x86 8 / 52

9 Ciclo for (1) /* Compute x raised to nonnegative power p */ int ipwr_for(int x, unsigned int p) { int result; for (result = 1; p!= 0; p = p>>1) { if (p & 0x1) result *= x; x = x*x; } return result; } Jorge Castro-Godínez Ensamblador x86 9 / 52

10 Ciclo for /* Compute x raised to nonnegative power p */ int ipwr_for(int x, unsigned int p) { int result; for (result = 1; p!= 0; p = p>>1) { if (p & 0x1) result *= x; x = x*x; } return result; } (2) result x=3 p= = = = = Jorge Castro-Godínez Ensamblador x86 10 / 52

11 Componentes en el ciclo for int result; for (result = 1; p!= 0; p = p>>1) { if (p & 0x1) result *= x; x = x*x; } for ( ; ; ) result = 1 p!= 0 p = p >> 1 { } if (p & 0x1) result *= x; x = x*x; Jorge Castro-Godínez Ensamblador x86 11 / 52

12 De for a while for ( ; ; ) ; while ( ) { ; } ; goto middle; loop: ; middle: if ( ) goto loop; done: Jorge Castro-Godínez Ensamblador x86 12 / 52

13 De for a while for ( ; ; ) for (result = 1; p!= 0; p = p>>1) { if (p & 0x1) result *= x; x = x*x; } ; goto middle; loop: ; middle: if ( ) goto loop; done: result = 1; goto middle; loop: if (p & 0x1) result *= x; x = x*x; p = p >> 1; middle: if (p!= 0) goto loop; done: Jorge Castro-Godínez Ensamblador x86 13 / 52

14 Disposición de la memoria (1) 2 N -1 Stack local variables; procedure context Dynamic Data (Heap) Static Data variables allocated with new or malloc static variables (including global variables (C)) Literals literals (e.g., example ) 0 Instructions Jorge Castro-Godínez Ensamblador x86 14 / 52

15 Disposición de la memoria (2) writable; not executable Stack Managed automatically (by compiler) writable; not executable Dynamic Data (Heap) Managed by programmer writable; not executable Static Data Initialized when process starts Read-only; not executable Literals Initialized when process starts Read-only; executable Instructions Initialized when process starts Jorge Castro-Godínez Ensamblador x86 15 / 52

16 Pila en IA32 Lazos o ciclos Región de memoria manejada al estilo de una pila. Crece hacia direcciones de memoria menores (es una convención). El registros contiene la dirección más baja de la pila, i.e., el elemento que se encuentra en la dirección al tope de la pila, el último elementos que se colocó en la pila. Jorge Castro-Godínez Ensamblador x86 16 / 52

17 Pila en IA32 Lazos o ciclos Stack Bottom Increasing Addresses Stack Pointer: Stack Grows Down Stack Top Jorge Castro-Godínez Ensamblador x86 17 / 52

18 Push (1) pushl src Stack Bottom Increasing Addresses Stack Pointer: Stack Grows Down Stack Top Jorge Castro-Godínez Ensamblador x86 18 / 52

19 Push (2) pushl src Se toma el valor de src, se decrementa en cuatro, el dato se almacena en la direcciónq ue indica. IA32 Call Stack: Push Stack Bottom Increasing Addresses Stack Pointer: -4 Stack Grows Down Stack Top Jorge Castro-Godínez Ensamblador x86 19 / 52

20 Pop (1) popl dest Stack Bottom Increasing Addresses Stack Pointer: Stack Grows Down Stack Top Jorge Castro-Godínez Ensamblador x86 20 / 52

21 Pop (2) popl dest Se carga el valor apuntado por, se escribe en dest, se incrementa en 4. Stack Bottom Increasing Addresses Stack Pointer: +4 Stack Grows Down Stack Top Jorge Castro-Godínez Ensamblador x86 21 / 52

22 Llamadas a procedimientos (1) Callee debe saber donde encontrar los argumentos Callee debe saber donde encontrar a dirección de retorno Caller debe saber donde encontrar el valor de retorno Caller y Callee se ejecutan en el mismo procesador y, por ende, comparten los mismos registros Caller debe salvar los valores de los registros que Callee pueda usar Callee debe salvar los valores de los registros que Caller haya usado Caller <set up args> call <clean up args> <find return val> Callee <create local vars> <set up return val> <destroy local vars> return Jorge Castro-Godínez Ensamblador x86 22 / 52

23 Llamadas a procedimientos (2) La convención que permite establecer donde colocar o encontrar valores (de registros, valores de retorno) es llamadado procedure call linkage Detalles pueden variar dependiendo del sistema. Caller <save regs> <set up args> call <clean up args> <restore regs> <find return val> Callee <save regs> <create local vars> <set up return val> <destroy local vars> <restore regs> return Jorge Castro-Godínez Ensamblador x86 23 / 52

24 Control de flujo en procedimientos Llamada al procedimiento: call label Hace un push de la dirección de retorno en la pila Salta al label Retorno del procedimiento: ret Hace un pop de la dirección de retorno que se encuentra en la pila Salta a la dirección Dirección de retorno Dirección de la instrucción que se encuentra después del call Ejemplo de instrucciones desensambladas Example from disassembly: e: e8 3d call 8048b90 <main> : 50 pushl %eax 0x Jorge Castro-Godínez Ensamblador x86 24 / 52

25 Ejemplo: llamada de procedimiento (1) e: e8 3d call 8048b90 <main> : 50 pushl %eax call 8048b90 0x110 0x10c 0x x108 %eip 0x804854e Jorge Castro-Godínez Ensamblador x86 25 / 52

26 Ejemplo: llamada de procedimiento (2) e: e8 3d call 8048b90 <main> : 50 pushl %eax call 8048b90 0x110 0x110 0x10c 0x10c 0x x x104 0x108 0x108 %eip 0x804854e %eip 0x804854e Jorge Castro-Godínez Ensamblador x86 26 / 52

27 Ejemplo: llamada de procedimiento (3) e: e8 3d call 8048b90 <main> : 50 pushl %eax call 8048b90 0x110 0x110 0x10c 0x10c 0x x x104 0x108 0x108 %eip 0x804854e %eip 0x804854e 0x Jorge Castro-Godínez Ensamblador x86 27 / 52

28 Ejemplo: llamada de procedimiento (4) e: e8 3d call 8048b90 <main> : 50 pushl %eax call 8048b90 0x110 0x110 0x10c 0x10c 0x x x104 0x x108 0x108 0x104 %eip 0x804854e %eip 0x804854e 0x Jorge Castro-Godínez Ensamblador x86 28 / 52

29 Ejemplo: llamada de procedimiento (5) e: e8 3d call 8048b90 <main> : 50 pushl %eax call 8048b90 0x110 0x110 0x10c 0x10c 0x x x104 0x x108 0x108 0x104 %eip 0x804854e %eip 0x x000063d 0x8048b90 Jorge Castro-Godínez Ensamblador x86 29 / 52

30 Ejemplo: retorno de procedimiento (1) : c3 ret ret 0x110 0x10c 0x108 0x x %eip 0x104 0x Jorge Castro-Godínez Ensamblador x86 30 / 52

31 Ejemplo: retorno de procedimiento (2) : c3 ret ret 0x110 0x10c 0x108 0x104 0x110 0x10c 123 0x108 0x x x104 0x104 %eip 0x %eip 0x Jorge Castro-Godínez Ensamblador x86 31 / 52

32 Ejemplo: retorno de procedimiento (3) : c3 ret ret 0x110 0x10c 0x108 0x104 0x110 0x10c 123 0x108 0x x x104 0x104 %eip 0x %eip 0x x Jorge Castro-Godínez Ensamblador x86 32 / 52

33 Ejemplo: retorno de procedimiento (4) : c3 ret ret 0x110 0x10c 0x108 0x104 0x110 0x10c 123 0x108 0x x x104 0x104 0x108 %eip 0x %eip 0x x Jorge Castro-Godínez Ensamblador x86 33 / 52

34 Valores retornados por procedimientos Por convención, los valores retornados por procedimientos son colocado en %eax Caller debe asegurarse de salvar los valores de los registros antes de llamar un Callee que devuelva un valor Callee coloca el valor de retorno (entero, flotante, puntero) Después del retorno, el Caller encuentra el valor devuelto en el registro %eax Jorge Castro-Godínez Ensamblador x86 34 / 52

35 Linux Stack Frame Lazos o ciclos Frame pointer %ebp Caller Frame Arguments Return Addr Old %ebp Stack pointer Saved Registers + Local Variables Argument Build Jorge Castro-Godínez Ensamblador x86 35 / 52

36 Función de swap swap int zip1 = 15213; int zip2 = 98195; void call_swap() { swap(&zip1, &zip2); } Lazos o ciclos Calling swap from call_swap call_swap: pushl $zip2 # Global Var pushl $zip1 # Global Var call swap (1) void swap(int *xp, int *yp) { int t0 = *xp; int t1 = *yp; *xp = t1; *yp = t0; } &zip2 &zip1 Rtn adr Resulting Stack Jorge Castro-Godínez Ensamblador x86 36 / 52

37 Función de swap Lazos o ciclos (2) void swap(int *xp, int *yp) { int t0 = *xp; int t1 = *yp; *xp = t1; *yp = t0; } swap: pushl %ebp movl,%ebp pushl %ebx movl 12(%ebp),%ecx movl 8(%ebp),%edx movl (%ecx),%eax movl (%edx),%ebx movl %eax,(%edx) movl %ebx,(%ecx) movl -4(%ebp),%ebx movl %ebp, popl %ebp ret Set Up Body Finish Jorge Castro-Godínez Ensamblador x86 37 / 52

38 swap setup Lazos o ciclos (1) Entering Stack Resulting Stack %ebp %ebp &zip2 yp &zip1 Rtn adr xp Rtn adr Old %ebp swap: pushl %ebp movl,%ebp pushl %ebx Jorge Castro-Godínez Ensamblador x86 38 / 52

39 swap setup Lazos o ciclos (2) Entering Stack Resulting Stack %ebp &zip2 yp &zip1 Rtn adr xp Rtn adr Old %ebp %ebp swap: pushl %ebp movl,%ebp pushl %ebx Jorge Castro-Godínez Ensamblador x86 39 / 52

40 swap setup Lazos o ciclos (3) Entering Stack Resulting Stack %ebp &zip2 &zip1 Rtn adr swap: pushl %ebp movl,%ebp pushl %ebx yp xp Rtn adr Old %ebp Old %ebx %ebp Jorge Castro-Godínez Ensamblador x86 40 / 52

41 swap body Lazos o ciclos Entering Stack Resulting Stack &zip2 &zip1 Rtn adr %ebp Offset relative to new %ebp yp xp Rtn adr Old %ebp %ebp Old %ebx movl 12(%ebp),%ecx # get yp movl 8(%ebp),%edx # get xp... Jorge Castro-Godínez Ensamblador x86 41 / 52

42 swap finish Lazos o ciclos (1) swap s Stack Resulting Stack yp yp xp xp Rtn adr Old %ebp %ebp Rtn adr Old %ebp %ebp Old %ebx Old %ebx movl -4(%ebp),%ebx movl %ebp, popl %ebp ret Jorge Castro-Godínez Ensamblador x86 42 / 52

43 swap finish Lazos o ciclos (2) swap s Stack Resulting Stack yp yp xp xp Rtn adr Old %ebp Old %ebx %ebp Rtn adr Old %ebp %ebp movl -4(%ebp),%ebx movl %ebp, popl %ebp ret Linux Stack Frame Jorge Castro-Godínez Ensamblador x86 43 / 52

44 swap finish Lazos o ciclos (3) swap s Stack Resulting Stack %ebp yp yp xp xp Rtn adr Old %ebp %ebp Rtn adr Old %ebx movl -4(%ebp),%ebx movl %ebp, popl %ebp ret Jorge Castro-Godínez Ensamblador x86 44 / 52

45 swap finish Lazos o ciclos (4) swap s Stack Resulting Stack %ebp yp yp xp xp Rtn adr Old %ebp %ebp Old %ebx movl -4(%ebp),%ebx movl %ebp, popl %ebp ret Jorge Castro-Godínez Ensamblador x86 45 / 52

46 swap desensamblado Lazos o ciclos a4 <swap>: 80483a4: 55 push %ebp 80483a5: 89 e5 mov,%ebp 80483a7: 53 push %ebx 80483a8: 8b mov 0x8(%ebp),%edx 80483ab: 8b 4d 0c mov 0xc(%ebp),%ecx 80483ae: 8b 1a mov (%edx),%ebx 80483b0: 8b 01 mov (%ecx),%eax 80483b2: mov %eax,(%edx) 80483b4: mov %ebx,(%ecx) 80483b6: 5b pop %ebx 80483b7: c9 leave 80483b8: c3 ret Calling Code mov %ebp, pop %ebp : e8 96 ff ff ff call 80483a4 <swap> e: 8b 45 f8 mov 0xfffffff8(%ebp),%eax Jorge Castro-Godínez Ensamblador x86 46 / 52

47 Convenciones para salvar registros Cuando yoo invoca a who: yoo es el caller who es el callee En este caso %edx seía sobreescrito por who Can a register be used for temporary storage? yoo: movl $12345, %edx call who addl %edx, %eax ret %edx who: movl 8(%ebp), %edx addl $98195, %edx ret who Jorge Castro-Godínez Ensamblador x86 47 / 52

48 Convenciones para salvar registros Convenciones Caller salva los valores temporales en su frame antes de llamar a otro procedimiento Callee salva los valores temporales en su frame antes de utilizar los registros. Jorge Castro-Godínez Ensamblador x86 48 / 52

49 Uso de registros en Linux %eax, %edx, %ecx: son salvador por el caller antes de llamar a un procedimiento, si es que dichos valores se desean usar posteriormente. %eax: utilizado por defecto para almacenar los valores de retorno de las funciones. %ebx, %esi, %edi: el callee debe guardar los valores si desea usarlos., %ebp: presentan una forma especial de guardarse, lo realiza el callee. Debe restaurar los valores originales que recibe antes de salir. Jorge Castro-Godínez Ensamblador x86 49 / 52

50 Uso de registros en Linux Caller-Save Temporaries Callee-Save Temporaries Special %eax %edx %ecx %ebx %esi %edi %ebp Jorge Castro-Godínez Ensamblador x86 50 / 52

51 Punteros a valores locales Recursive Procedure void s_helper (int x, int *accum) { if (x <= 1) return; else { int z = *accum * x; *accum = z; s_helper (x-1,accum); } } Top-Level Call int sfact(int x) { int val = 1; s_helper(x, &val); return val; } Jorge Castro-Godínez Ensamblador x86 51 / 52

52 Crear e inicializar un puntero int sfact(int x) { int val = 1; s_helper(x, &val); return val; } Initial part of sfact _sfact: pushl %ebp # Save %ebp movl,%ebp # Set %ebp subl $16, # Add 16 bytes movl 8(%ebp),%edx # edx = x movl $1,-4(%ebp) # val = 1 8 x 4 Rtn adr 0 Old %ebp -4 val = 1-8 Temp. -12 Unused Space -16 %ebp Jorge Castro-Godínez Ensamblador x86 52 / 52

53 Pasar un puntero Lazos o ciclos int sfact(int x) { int val = 1; s_helper(x, &val); return val; } Calling s_helper from sfact Stack at time of call: leal -4(%ebp),%eax # Compute &val pushl %eax # Push on stack pushl %edx # Push x call s_helper # call movl -4(%ebp),%eax # Return val # Finish x Rtn adr Old %ebp val=x! = 1 Unused &val x %ebp Jorge Castro-Godínez Ensamblador x86 53 / 52

Ensamblador x86. Ing. Jorge Castro-Godínez

Ensamblador x86. Ing. Jorge Castro-Godínez Ensamblador x86 Lección 4 Ing. Jorge Castro-Godínez MT7003 Microprocesadores y Microcontroladores Área de Ingeniería Mecatrónica Instituto Tecnológico de Costa Rica I Semestre 2014 Jorge Castro-Godínez

Más detalles

Programación a Nivel-Máquina III: Sentencias switch y Procedimientos IA32

Programación a Nivel-Máquina III: Sentencias switch y Procedimientos IA32 Programación a Nivel-Máquina III: Sentencias switch y Procedimientos IA32 Semana 4 Bibliografía: [BRY11] Cap.3 Computer Systems: A Programmer s Perspective. Bryant, O Hallaron. Pearson, 2011 Signatura

Más detalles

Fundamentos de Arquitectura y Código Máquina

Fundamentos de Arquitectura y Código Máquina Fundamentos de Arquitectura y Código Máquina Lección 3 Ing. Jorge Castro-Godínez MT7003 Microprocesadores y Microcontroladores Área de Ingeniería Mecatrónica Instituto Tecnológico de Costa Rica I Semestre

Más detalles

Arquitectura de Computadores y laboratorio Clase 15: Arquitectura MIPS Pt.3. Departamento de Ingeniería de Sistemas Universidad de Antioquia 2011 2

Arquitectura de Computadores y laboratorio Clase 15: Arquitectura MIPS Pt.3. Departamento de Ingeniería de Sistemas Universidad de Antioquia 2011 2 Arquitectura de Computadores y laboratorio Clase 15: Arquitectura MIPS Pt.3 Departamento de Ingeniería de Sistemas Universidad de Antioquia 2011 2 Instrucciones de control de flujo Arquitectura de Computadores

Más detalles

Práctica 3: Programación con subrutinas

Práctica 3: Programación con subrutinas Práctica 3: Programación con subrutinas 3.1 Objetivos El objetivo de esta práctica es estudiar el soporte del ensamblador del ARM para la gestión de subrutinas, para lo que resulta necesario familiarizarse

Más detalles

Funciones. Diseño de funciones. Uso de instrucción jal y retorno de subrutina.

Funciones. Diseño de funciones. Uso de instrucción jal y retorno de subrutina. MIPS Funciones 1 Funciones Diseño de funciones. Uso de instrucción jal y retorno de subrutina. Se suelen denominar funciones, procedimientos, subrutinas, subprogramas a las estructuras que emplean los

Más detalles

Apellidos Nombre DNI

Apellidos Nombre DNI A continuación se muestra el listado de un programa cuyo objetivo es encontrar una palabra dentro de una cadena de caracteres de la sección de datos y copiar dicha palabra en otra zona de la sección de

Más detalles

Programación a Nivel-Máquina I: Conceptos Básicos

Programación a Nivel-Máquina I: Conceptos Básicos Programación a Nivel-Máquina I: Conceptos Básicos Semana 2 Bibliografía: [BRY11] Cap.3 Computer Systems: A Programmer s Perspective. Bryant, O Hallaron. Pearson, 2011 Signatura ESIIT/C.1 BRY com Transparencias

Más detalles

Entorno de Ejecución del Procesador Intel Pentium

Entorno de Ejecución del Procesador Intel Pentium Arquitectura de Ordenadores Arquitectura del Procesador Intel Pentium Abelardo Pardo abel@it.uc3m.es Universidad Carlos III de Madrid Departamento de Ingeniería Telemática Entorno de Ejecución del Procesador

Más detalles

Tema 6: Generación de código (parte 2)

Tema 6: Generación de código (parte 2) Tema 6: Generación de código (parte 2) Procesamiento de Lenguajes Dept de Lenguajes y Sistemas Informáticos Universidad de Alicante Procesamiento de Lenguajes Tema 6: Generación de código (parte 2) 1 /

Más detalles

Escalada de privilegios mediante infección ELF

Escalada de privilegios mediante infección ELF FIST Conference /Barcelona 2006 @ Sponsored by: Escalada de privilegios mediante infección ELF Jesús Olmos González I/O vs Memory Comprobaciones iniciales Cabecera Elf Tabla de segmentos Cálculo de entry

Más detalles

Generación de código para funciones. Generación de código para funciones. Generación de código para funciones. Generación de código para funciones

Generación de código para funciones. Generación de código para funciones. Generación de código para funciones. Generación de código para funciones Ejemplo introductorio: escritura de funciones en NASM Ejemplo introductorio: escritura de funciones en NASM En estas transparencias pondremos una subrutina ASPLE y la generación de código equivalente En

Más detalles

2014 Mario Medina C. 1

2014 Mario Medina C. 1 Ensamblador y lenguaje C Ensamblador Intel x86 y lenguaje C Sistemas Computacionales Mario Medina C. mariomedina@udec.cl Lenguaje C: lenguaje de alto nivel Fácil de compilar a código de máquina Usado para

Más detalles

1. Manejo de memoria estática 2. Manejo de memoria dinámica

1. Manejo de memoria estática 2. Manejo de memoria dinámica 1. Manejo de memoria estática 2. Manejo de memoria dinámica *La administración de memoria de una computadora es una tarea fundamental debido a que la cantidad de memoria es limitada. *El sistema operativo

Más detalles

Práctica 1. Introducción a la programación en ensamblador

Práctica 1. Introducción a la programación en ensamblador Práctica 1 Introducción a la programación en ensamblador 1. Generalidades 2. Introducción 3. Cuestiones 1. Generalidades El desarrollo de las prácticas consistirá en una breve introducción del tema por

Más detalles

PRÁCTICA # 2. 0 Direcciones 1 Dirección 2 Direcciones 3 Direcciones

PRÁCTICA # 2. 0 Direcciones 1 Dirección 2 Direcciones 3 Direcciones UNIVERSIDAD CENTRAL DE VENEZUELA FACULTAD DE CIENCIAS ESCUELA DE COMPUTACIÓN UNIDAD DOCENTE DE REDES, ARQUITECTURA Y SISTEMAS ORGANIZACIÓN Y ESTRUCTURA DEL COMPUTADOR I PRÁCTICA # 2 1. Escriba programas

Más detalles

El lenguaje de Programación C. Fernando J. Pereda <ferdy@gentoo.org>

El lenguaje de Programación C. Fernando J. Pereda <ferdy@gentoo.org> El lenguaje de Programación C Fernando J. Pereda Por qué aprender C? Portable y muy extendido Estándar (C89, C99) El lenguaje de los sistemas Un lenguaje fácil (no, no es broma) Por

Más detalles

Pruebas de unidad con JUnit

Pruebas de unidad con JUnit Pruebas de unidad con JUnit Cuando se implementa software, resulta recomendable comprobar que el código que hemos escrito funciona correctamente. Para ello, implementamos pruebas que verifican que nuestro

Más detalles

ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA

ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA Tema 4: Familia x86 Carlos Garre 1 Familia x86 Contenidos Concepto de familia: la familia x86. Generaciones de la familia x86. Primera generación: 8086. Segunda generación: 80286. Tercera generación: 80386.

Más detalles

Organización del Computador I 1er. Parcial 17-Mayo-2005. Turno:

Organización del Computador I 1er. Parcial 17-Mayo-2005. Turno: Nota: En el parcial se puede tener la cartilla de Assembler y la de seguimiento (formatos de instrucción) pero no se pueden compartir. Para aprobar el parcial, son necesarios 6(seis) puntos. Para promocionar,

Más detalles

FUNDAMENTOS DE PROGRAMACIÓN

FUNDAMENTOS DE PROGRAMACIÓN FUNDAMENTOS DE PROGRAMACIÓN Sabino Miranda Jiménez Universidad Autónoma del Estado de México (UAEM) Apuntadores (1) Un apuntador es una variable que contiene la dirección de una ora variable Generan código

Más detalles

Se guardan en archivos con extencion c y los cabezales con extension h

Se guardan en archivos con extencion c y los cabezales con extension h Se guardan en archivos con extencion c y los cabezales con extension h Tipos de Variables: Tipo Tamaño(bytes) Limite inferior Limite superior char 1 -- -- unsigned char 1 0 255 short int 2-32768 +32767

Más detalles

Punteros. Definición Un puntero es un dato que contiene una dirección de memoria.

Punteros. Definición Un puntero es un dato que contiene una dirección de memoria. Punteros Definición Un puntero es un dato que contiene una dirección de memoria. NOTA: Existe una dirección especial que se representa por medio de la constante NULL (definida en ) y se emplea

Más detalles

Introduccion al Lenguaje C. Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia

Introduccion al Lenguaje C. Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia Introduccion al Lenguaje C Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia Introducción C es un lenguaje de programación creado en 1972 por

Más detalles

Ilustrar el mecanismo de llamadas al sistema para solicitar servicios al sistema operativo.

Ilustrar el mecanismo de llamadas al sistema para solicitar servicios al sistema operativo. Práctica 1: introducción al simulador SPIM 1. Motivación Seguro que a estas alturas de la carrera sabe ya manejar un ordenador perfectamente. Incluso debe saber cómo programarlos en un lenguaje de alto

Más detalles

Entender los aspectos técnicos, por los cuales un intruso puede ingresar a un sistema y tomar el control de este

Entender los aspectos técnicos, por los cuales un intruso puede ingresar a un sistema y tomar el control de este COMO PENETRAR UN SISTEMA POR MEDIO DE DESBORDAMIENTO DE BUFFER OBJETIVO Entender los aspectos técnicos, por los cuales un intruso puede ingresar a un sistema y tomar el control de este AGENDA Programas

Más detalles

Guía Laboratorio Número 1

Guía Laboratorio Número 1 Guía Laboratorio Número 1 Página 1 de 5 Arquitectura de Computadoras 06/04/2014 Repaso lenguaje ensamblador Escribir códigos en lenguaje ensamblador es bastante sencillo, por lo que no es necesario el

Más detalles

ISA (Instruction Set Architecture) Arquitectura del conjunto de instrucciones

ISA (Instruction Set Architecture) Arquitectura del conjunto de instrucciones ISA (Instruction Set Architecture) Arquitectura del conjunto de instrucciones Instruction Set Architecture (ISA) Arquitectura del conjunto de instrucciones software Conjunto de instrucciones hardware Universidad

Más detalles

El lenguaje C. #define MAX LINEA 1000 /* maximo tamanio de linea de entrada */

El lenguaje C. #define MAX LINEA 1000 /* maximo tamanio de linea de entrada */ Principios de Programación El lenguaje C 1. Variables locales y globales 1.1. Variables locales Las funciones permiten al programador modularizar un programa. Todas las variables declaradas en las definiciones

Más detalles

Tema: Arreglos de Objetos en C++.

Tema: Arreglos de Objetos en C++. Programación II. Guía 5 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación II Tema: Arreglos de Objetos en C++. Objetivos Específicos Describir la implementación de arreglos de Objetos.

Más detalles

Contenidos. Gestión dinámica de memoria. Gestión dinámica de memoria. Introducción. 1. Introducción 2. El operador NEW 3. El operador DELETE

Contenidos. Gestión dinámica de memoria. Gestión dinámica de memoria. Introducción. 1. Introducción 2. El operador NEW 3. El operador DELETE Contenidos 1. Introducción 2. El operador NEW 3. El operador DELETE 1 Introducción Hasta ahora hemos visto que cada vez que queremos usar una variable debemos reservarle un lugar de la memoria al comenzar

Más detalles

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA UNED Centro Asociado de Cádiz RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA 1. OBJETOS Cualquier elemento del programa es un objeto. Un programa es un conjunto de objetos que se comunican entre sí

Más detalles

Estructura de Datos [Tipos de datos concretos y tipos de datos abstractos]

Estructura de Datos [Tipos de datos concretos y tipos de datos abstractos] Estructura de Datos [Tipos de datos concretos y tipos de datos abstractos] M. en C. Sergio Luis Pérez Pérez UAM CUAJIMALPA, MÉXICO, D. F. Trimestre 14-O Sergio Luis Pérez (UAM CUAJIMALPA) Curso de Estructura

Más detalles

Organización de Computadoras

Organización de Computadoras Organización de Computadoras Departamento de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur Segundo Cuatrimestre de 2015 Proyecto N 1 Programación en Lenguaje C El objetivo principal

Más detalles

Tema 6. Reutilización de código. Programación 2015-2016. Programación - Tema 6: Reutilización de código

Tema 6. Reutilización de código. Programación 2015-2016. Programación - Tema 6: Reutilización de código Tema 6 Reutilización de código Programación 2015-2016 Programación - Tema 6: Reutilización de código 1 Tema 6. Reutilización de código Modularidad. Implementación de métodos. Uso de métodos. Programación

Más detalles

Llamada a un método. Llamada a métodos en Mic-1. Llamada a un método. Paso de parámetros. Instrucciones InvokeVirtual e ireturn

Llamada a un método. Llamada a métodos en Mic-1. Llamada a un método. Paso de parámetros. Instrucciones InvokeVirtual e ireturn Llamada a métodos en Mic-1 Instrucciones InvokeVirtual e ireturn Llamada a un método La dirección de comienzo del método se guarda en la reserva de constantes. 1 Llamada a un método public class demo {

Más detalles

62/8&,21(6$/(;$0(1'( /$%25$725,2'((6758&785$6'(/26&20387$'25(6 &8562)(%5(52

62/8&,21(6$/(;$0(1'( /$%25$725,2'((6758&785$6'(/26&20387$'25(6 &8562)(%5(52 62/8&,21(6$/(;$0(1'( /$%25$725,2'((6758&785$6'(/26&20387$'25(6 &8562)(%5(52 3DUWHGH(QVDPEODGRU 4º) Escribir un programa en ensamblador que pida un número de una cifra por teclado y saque como resultado

Más detalles

"Programación en Ensamblador del microprocesador Pentium (I)"

Programación en Ensamblador del microprocesador Pentium (I) PRÁCTICA 3 "Programación en Ensamblador del microprocesador Pentium (I)" ÍNDICE 3.1.- El microprocesador Pentium. 3.2.- Inserción de ensamblador en Visual Studio. 3.3.- Facilidades para la depuración de

Más detalles

Estructura de Computadores

Estructura de Computadores Estructura de Computadores 4.- Programación en Ensamblador Parte IV Contenido Subrutinas. Llamadas al sistema. Página 2 Subrutinas Módulos de programa que pueden reutilizarse en distintos puntos del programa.

Más detalles

Pila / Convención C / Interacción C-ASM. Ejercicios. Pila. Organización del Computador II. 21 de marzo de 2017

Pila / Convención C / Interacción C-ASM. Ejercicios. Pila. Organización del Computador II. 21 de marzo de 2017 Organización del Computador II 21 de marzo de 2017 / / Hoy vamos a ver / / Para ponernos de acuerdo... Está en memoria. RSP y RBP la definen. Crece númericamente para atrás. / / Cómo la usamos? PUSH y

Más detalles

Arquitectura de Computadores

Arquitectura de Computadores Arquitectura de Computadores Ricardo.Sanz@upm.es Curso 2004-2005 Arquitectura de Computadores Arquitectura de computadores es la disciplina que estudia la organización y funcionamiento de los computadores

Más detalles

GENERACIÓN DE CÓDIGO

GENERACIÓN DE CÓDIGO GENERACIÓN DE CÓDIGO INTRODUCCION La generación de código es la fase más compleja de un compilador, puesto que no sólo depende de las características del lenguaje fuente sino también de contar con información

Más detalles

Fundamentos de Computadores

Fundamentos de Computadores Universidad de Murcia Facultad de Informática TÍTULO DE GRADO EN INGENIERÍA INFORMÁTICA Tema 5: Lenguajes del computador: alto nivel, ensamblador y máquina Boletín de autoevaluación de las sesiones prácticas

Más detalles

Tiempo de Compilación. Programa fuente. Secuencia. de caracteres. Scanner. Secuencia. de símbolos Parser. Compilador.

Tiempo de Compilación. Programa fuente. Secuencia. de caracteres. Scanner. Secuencia. de símbolos Parser. Compilador. ORGANIZACIÓN DE LA MEMORIA EN TIEMPO DE EJECUCIÓN Compilador Tiempo de Compilación Programa fuente Secuencia de caracteres Scanner Secuencia de símbolos Parser Árbol sintáctico Analizador semántico Generador

Más detalles

Hacer ejercicios del libro (Cap. 9 Seguridad): 4,5,6,7,8,9,10,12,13

Hacer ejercicios del libro (Cap. 9 Seguridad): 4,5,6,7,8,9,10,12,13 Práctico Seguridad Sistemas Operativos Hacer ejercicios del libro (Cap. 9 Seguridad): 4,5,6,7,8,9,10,12,13 1) Suponga que se previene la ejecucion de datos localizados en la pila de una funcion (osea,

Más detalles

Para leer la entrada de consola, lo primero que se hace es construir un Scanner que este asociado al flujo de entrada estándar System.

Para leer la entrada de consola, lo primero que se hace es construir un Scanner que este asociado al flujo de entrada estándar System. CICLO: 01/2010 Universidad Don Bosco Materia: Lenguaje de Programación III Contenido: 1-Lectura de Datos de entrada. 2-Introduccion a JOPTIONPANE. 3-Estructuras de Control. ->LECTURA DE DATOS DE ENTRADA

Más detalles

Tutorial básico del entorno de desarrollo Eclipse.

Tutorial básico del entorno de desarrollo Eclipse. Tutorial básico del entorno de desarrollo Eclipse. Arrancar Eclipse. Después de descomprimir la aplicación, dar doble clic sobre el ícono ejecutable para arrancar la aplicación. En caso de que se presente

Más detalles

Tema 2. Diseño del repertorio de instrucciones

Tema 2. Diseño del repertorio de instrucciones Soluciones a los problemas impares Tema 2. Diseño del repertorio de instrucciones Arquitectura de Computadores Curso 2009-2010 Tema 2: Hoja: 2 / 16 Tema 2: Hoja: 3 / 16 Base teórica Al diseñar un computador,

Más detalles

Circuitos Digitales II y Laboratorio Electrónica Digital II y Laboratorio

Circuitos Digitales II y Laboratorio Electrónica Digital II y Laboratorio Circuitos Digitales II y Laboratorio Electrónica Digital II y Laboratorio Fundamentos de Arquitectura de Computadores Modelo de von Neumann Profesor: Felipe Cabarcas Correo:cabarcas@udea.edu.co Oficina:

Más detalles

Examen Principios de Programación Febrero 2012

Examen Principios de Programación Febrero 2012 Por favor siga las siguientes indicaciones: Escriba con lápiz. Escriba su nombre y número de documento en todas las hojas que entregue. Numere las hojas e indique el total de hojas en la primera de ellas.

Más detalles

Introducción a la Computación

Introducción a la Computación Introducción a la Computación Primer Cuatrimestre de 2012 Organización de Computadoras (Brevísima Introducción) 1 Mapa de la materia Programas simples en C. Especificación de problemas. Corrección de algoritmos.

Más detalles

Modulo 1 El lenguaje Java

Modulo 1 El lenguaje Java Modulo 1 El lenguaje Java 13 - Codificación en Java Una de las grandes diferencias entre Java y Pascal en cuando a la codificación es que Java se trata de un lenguaje de los llamados case sensitive Esto

Más detalles

República Bolivariana de Venezuela Aldea Universitaria Liceo Fray Pedro de Agreda. Lenguaje C++ Contadores y Acumuladores

República Bolivariana de Venezuela Aldea Universitaria Liceo Fray Pedro de Agreda. Lenguaje C++ Contadores y Acumuladores República Bolivariana de Venezuela Aldea Universitaria Liceo Fray Pedro de Agreda Prof. Elías Cisneros. Lenguaje C++ Contadores y Acumuladores Usted es libre de: * Copiar, distribuir y comunicar públicamente

Más detalles

Una variable de clase escalar tiene un nivel de indirección igual a 1. Por ejemplo, las variables i, b y x definidas como se muestra a continuación.

Una variable de clase escalar tiene un nivel de indirección igual a 1. Por ejemplo, las variables i, b y x definidas como se muestra a continuación. Descripción de la semántica de ALFA En esta descripción sólo se mencionarán los aspectos en los que el lenguaje de programación ALFA pueda diferir de otros lenguajes de programación de alto nivel. Se sobreentienden

Más detalles

Examen Junio- Grupo A Lunes 17 de Junio - Programación en C++ Pág. 1

Examen Junio- Grupo A Lunes 17 de Junio - Programación en C++ Pág. 1 Examen Junio- Grupo A Lunes 17 de Junio - Programación en C++ Pág. 1 ÍNDICE ÍNDICE... 1 1.1 Ejercicio 1: Máquina Expendedora (3.5 ptos.)... 1 1.2 Ejercicio 2: Clase Circulo (1.0 pto.)... 3 1.3 Ejercicio

Más detalles

Tema: FUNCIONES, PROCEDIMIENTOS Y RECURSIVIDAD.

Tema: FUNCIONES, PROCEDIMIENTOS Y RECURSIVIDAD. Programación I, Guía 6 1 Facultad : Ingeniería Escuela : Computación Asignatura: Programación I Tema: FUNCIONES, PROCEDIMIENTOS Y RECURSIVIDAD. Objetivos Utilizar la sintaxis de las funciones definidas

Más detalles

FONAMENTS D'ORDINADORS. [H10] La pila (stack) La pila: exemple. Crida a una subrutina. TEMA 7: Subrutines. Manel Guerrero.

FONAMENTS D'ORDINADORS. [H10] La pila (stack) La pila: exemple. Crida a una subrutina. TEMA 7: Subrutines. Manel Guerrero. FONAMENTS D'ORDINADORS [H10] La pila (stack) TEMA 7: Subrutines Manel Guerrero La pila és una pila de bytes LIFO: Last In, First Out. La pila té associat un punter al seu cim (%esp) que s'inicialitza pel

Más detalles

4 o Ingeniería Informática

4 o Ingeniería Informática Esquema del tema 1. Introducción 2. Código intermedio 4 o Ingeniería Informática II26 Procesadores de lenguaje Generación de código 3. Generación de código para expresiones 4. Generación de código para

Más detalles

UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA ELO311 Estructuras de Computadores

UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA ELO311 Estructuras de Computadores 6.5. Comunicación de las funciones con su entorno. Hasta el momento se ha conceptualizado una subrutina como un segmento de código que ocurre a menudo en un programa. La idea puede flexibilizarse y aumentar

Más detalles

Instrumentación Virtual con LabVIEW

Instrumentación Virtual con LabVIEW Instrumentación Virtual con LabVIEW ESTRUCTURAS ESTRUCTURAS WHILE FOR.. CASE SEQUENCE Opciones de selección de CASE Controles Visibles Variables Locales y Globales Personalizar controles 1.- ENTORNO DE

Más detalles

Análisis general de un Microprocesador

Análisis general de un Microprocesador Análisis general de un Microprocesador Arquitectura del chip Repertorio de instrucciones Sistema mínimo Señales de control Función de cada pin del µp Herramientas de desarrollo Performance. ARQUITECTURA

Más detalles

GESTIÓN DE EXCEPCIONES EN JAVA. CAPTURA CON BLOQUES TRY CATCH Y FINALLY. EJEMPLOS RESUELTOS. (CU00927C)

GESTIÓN DE EXCEPCIONES EN JAVA. CAPTURA CON BLOQUES TRY CATCH Y FINALLY. EJEMPLOS RESUELTOS. (CU00927C) APRENDERAPROGRAMAR.COM GESTIÓN DE EXCEPCIONES EN JAVA. CAPTURA CON BLOQUES TRY CATCH Y FINALLY. EJEMPLOS RESUELTOS. (CU00927C) Sección: Cursos Categoría: Lenguaje de programación Java nivel avanzado I

Más detalles

Arquitectura intel 8086. Preámbulo de OSO para alumnos formados en el procesador MIPS. Asignatura Sistemas Operativos Murcia abril de 2005

Arquitectura intel 8086. Preámbulo de OSO para alumnos formados en el procesador MIPS. Asignatura Sistemas Operativos Murcia abril de 2005 Arquitectura intel 8086 Preámbulo de OSO para alumnos formados en el procesador MIPS Asignatura Sistemas Operativos Murcia abril de 2005 página 1. Introducción 2 2.- Direccionamiento y Registros de Segmento

Más detalles

Tema 2: Arquitectura del repertorio de instrucciones. Visión del computador que tiene el programador en bajo nivel.

Tema 2: Arquitectura del repertorio de instrucciones. Visión del computador que tiene el programador en bajo nivel. Tema 2: Arquitectura del repertorio de instrucciones Visión del computador que tiene el programador en bajo nivel. Lo que el programador en lenguaje ensamblador debe conocer para escribir programas: (1)

Más detalles

Programación Orientada a Objetos en Java

Programación Orientada a Objetos en Java Programación Orientada a Objetos en Java Curso 2006-2007 Tema 3 Clases y Objetos Gonzalo Méndez Pozo Dpto. de Ingeniería de Software e Inteligencia Artificial Universidad Complutense de Madrid Clases y

Más detalles

Propedéutico de Programación

Propedéutico de Programación Propedéutico de Programación Coordinación de Ciencias Computacionales 6/13 Material preparado por: Dra. Pilar Gómez Gil Chapter 15 Pointers, Dynamic Data, and Reference Types (continuación) Dale/Weems

Más detalles

Programas de ordenador (software)

Programas de ordenador (software) Programas de ordenador (software) Jorge Juan Chico , Julián Viejo Cortés 2011, 2014, 2015 Departamento de Tecnología Electrónica Universidad de Sevilla Usted es libre

Más detalles

Pontificia Universidad Católica de Chile Escuela de Ingeniería Departamento de Ciencia de la Computación. IIC1102 Introducción a la Programación

Pontificia Universidad Católica de Chile Escuela de Ingeniería Departamento de Ciencia de la Computación. IIC1102 Introducción a la Programación Pontificia Universidad Católica de Chile Escuela de Ingeniería Departamento de Ciencia de la Computación IIC1102 Introducción a la Programación Tutorial eclipse TM Introducción al uso de eclipse TM Contents

Más detalles

ELO329: Diseño y Programación Orientados a Objetos 20 de Junio de 2005. Certamen Final

ELO329: Diseño y Programación Orientados a Objetos 20 de Junio de 2005. Certamen Final Certamen Final 1. Se tiene una aplicación Java que muestra dos botones. Cuando presionamos el botón de la izquierda, incrementa el número mostrado en el botón de la derecha. Cuando presionamos el botón

Más detalles

Race Manager by Master Timing Guía del usuario GUIA RACE MANAGER. Eventronic, SL

Race Manager by Master Timing Guía del usuario GUIA RACE MANAGER. Eventronic, SL GUIA RACE MANAGER Eventronic, SL DESCRIPCIÓN DEL PROGRAMA El Race Manager es un programa que se creó para facilitar el trabajo de la dirección de carrera de un evento durante y después de una carrera.

Más detalles

Sesión 8- Práctica de Medida de Rendimiento

Sesión 8- Práctica de Medida de Rendimiento Sesión 8- Práctica de Medida de Rendimiento Arquitectura de Computadores I (IS19) Arquitectura de Computadores I (II19) Área de Arquitectura y Tecnología de Computadores Departamento de Ingeniería y Ciencia

Más detalles

Arquitectura IA-32 Pila. Autor:Alejandro Furfaro

Arquitectura IA-32 Pila. Autor:Alejandro Furfaro Arquitectura IA-32 Pila 1 Cuando se usa la pila? Cuando llamamos a una subrutina desde un programa en Assembler, mediante la instrucción CALL Cuando el hardware mediante la interfaz adecuada envía una

Más detalles

Esquema de un programa en C: bloques básicos

Esquema de un programa en C: bloques básicos Esquema de un programa en C: bloques básicos // Incluimos los ficheros de cabecera que necesitemos. // Esto es un comentario #include #include // Si queremos definir alguna constante,

Más detalles

Universidad Nacional del Santa F A C U L T A D D E I N G E N I E R I A E.A.P. Ingeniería de Sistemas e Informática NETBEANS 7.0

Universidad Nacional del Santa F A C U L T A D D E I N G E N I E R I A E.A.P. Ingeniería de Sistemas e Informática NETBEANS 7.0 Universidad Nacional del Santa F A C U L T A D D E I N G E N I E R I A E.A.P. Ingeniería de Sistemas e Informática NETBEANS 7.0 PROYECTO DE ESTRUCTURA REPETITIVA DO WHILE A c o n t i n u a c i ó n r e

Más detalles

TEMA 4. EXCEPCIONES Y MANEJO DE EXCEPCIONES.

TEMA 4. EXCEPCIONES Y MANEJO DE EXCEPCIONES. TEMA 4. EXCEPCIONES Y MANEJO DE EXCEPCIONES. 4.1. Introducción. 4.2. Tratamiento de excepciones. 4.2.1. Excepciones en lenguajes tradicionales. 4.2.2. Tratamiento de excepciones moderno. 4.3. Tratamiento

Más detalles

1.00 Clase 8. Datos y métodos estáticos. Datos y métodos estáticos de las clases. Campos de datos estáticos:

1.00 Clase 8. Datos y métodos estáticos. Datos y métodos estáticos de las clases. Campos de datos estáticos: 1.00 Clase 8 Datos y métodos estáticos Datos y métodos estáticos de las clases Campos de datos estáticos: Sólo una instancia de elemento de datos para toda una clase. Ninguna por objeto. Estático es un

Más detalles

GUÍA DE LABORATORIO 5 ARREGLOS DE UNA DIMENSIÓN

GUÍA DE LABORATORIO 5 ARREGLOS DE UNA DIMENSIÓN GUÍA DE LABORATORIO 5 ARREGLOS DE UNA DIMENSIÓN INTRODUCCION Un arreglo es una colección de variables del mismo tipo, referidos por un nombre común. En Java, los arreglos tienen una o más dimensiones,

Más detalles

Práctica 1: Entorno de desarrollo GNU

Práctica 1: Entorno de desarrollo GNU Práctica 1: Entorno de desarrollo GNU Gustavo Romero López Arquitectura y Tecnología de Computadores 6 de marzo de 2017 Gustavo Romero López Práctica 1: Entorno de desarrollo GNU 1 / 17 Material complementario

Más detalles

Introducción al desarrollo de RIA's con Adobe Flex 3.0 Dia 4

Introducción al desarrollo de RIA's con Adobe Flex 3.0 Dia 4 Introducción al desarrollo de RIA's con Adobe Flex 3.0 Dia 4 by S. Muñoz-Gutiérrez stalinmunoz@yahoo.com, informes@grupolinda.org Grupo LINDA Facultad de Ingeniería UNAM México Octubre-Diciembre 2009 Identificando

Más detalles

Tema 5 Repertorios de instrucciones: Modos de direccionamiento y formato

Tema 5 Repertorios de instrucciones: Modos de direccionamiento y formato Tema 5 Repertorios de instrucciones: Modos de direccionamiento y formato Bibliografía: William Stallings Organización y Arquitectura de computadores 5ta. Edition. Editorial Pearson Educación.- Objetivos:

Más detalles

PRACTICA #1. Aprender a programar una interrupción software empleando C y/o Ensamblador.

PRACTICA #1. Aprender a programar una interrupción software empleando C y/o Ensamblador. PRACTICA #1 Aprender a programar una interrupción software empleando C y/o Ensamblador. Aprender a manipular dispositivos externos (8253, 8255) desde C y/o ensamblador. PROCEDIMIENTO: Vamos a programar

Más detalles

ELO311 Estructuras de Computadores Digitales. Operaciones MIPS para Control de flujo

ELO311 Estructuras de Computadores Digitales. Operaciones MIPS para Control de flujo ELO311 Estructuras de Computadores Digitales Operaciones MIPS para Control de flujo Tomás Arredondo Vidal Este material está basado en: material de apoyo del texto de David Patterson, John Hennessy, "Computer

Más detalles

Práctica 4 - Arquitectura CPU

Práctica 4 - Arquitectura CPU Práctica 4 - Arquitectura CPU Organización del Computador 1 1er. Cuatrimestre 2006 Programación en Assembler Ejercicio 1 Dados los siguientes valores de la memoria y del registro R0 de la arquitectura

Más detalles

Benemérita Universidad Autónoma del Estado de Puebla

Benemérita Universidad Autónoma del Estado de Puebla Benemérita Universidad Autónoma del Estado de Puebla Facultad de Cs. De la Computación Programación Concurrente y Paralela Práctica de Laboratorio No. 5 Profr: María del Carmen Cerón Garnica Alumno: Roberto

Más detalles

JUGANDO CON C, ASM Y SYSCALLS Alejandro Hernández - @nitr0usmx

JUGANDO CON C, ASM Y SYSCALLS Alejandro Hernández - @nitr0usmx JUGANDO CON C, ASM Y SYSCALLS Alejandro Hernández - @nitr0usmx Tabla de Contenidos 1.-ASM. 1.1.-Definición de ASM. 1.2.-Arquitectura de computadoras. 1.3.-Instrucciones básicas. 2.-SYSCALLS. 2.1.-Definición

Más detalles

d) Mencione dos diferencias y dos semejanzas entre clases abstractas e interfaces.

d) Mencione dos diferencias y dos semejanzas entre clases abstractas e interfaces. Primer Certamen 1er. Sem 2004 Todas las preguntas tienen igual puntaje. 1. a) Usando los niveles de madurez definidos en CMM, qué nivel le corresponde a una empresa que se caracteriza por comprometer productos

Más detalles

Aprendiendo a programar Microcontroladores PIC en Lenguaje C con CCS

Aprendiendo a programar Microcontroladores PIC en Lenguaje C con CCS Aprendiendo a programar Microcontroladores PIC en Lenguaje C con CCS Por Andrés Raúl Bruno Saravia Entrega Nº 5. Cómo declaramos una variable en Lenguaje C? En C siempre se deben declarar las variables.

Más detalles

Abelardo Pardo. Iria Estévez Ayres. Damaris Fuentes Lorenzo. Pablo Basanta Val. Pedro J. Muñoz Merino. Hugo A. Parada.

Abelardo Pardo. Iria Estévez Ayres. Damaris Fuentes Lorenzo. Pablo Basanta Val. Pedro J. Muñoz Merino. Hugo A. Parada. Arquitectura de sistemas Abelardo Pardo University of Sydney School of Electrical and Information Engineering NSW, 2006, Australia Autor principal del curso de 2009 a 2012 Iria Estévez Ayres Damaris Fuentes

Más detalles

1. Ejemplo de clase : La clase Cuenta 2. Uso de la clase Cuenta. 3. Métodos y objetos receptores de mensajes (Importante)

1. Ejemplo de clase : La clase Cuenta 2. Uso de la clase Cuenta. 3. Métodos y objetos receptores de mensajes (Importante) 1. : La clase Cuenta. Uso de la clase Cuenta 3. Métodos y objetos receptores de mensajes (Importante) 1 Una clase para cuentas de un banco Vamos a modelar con una clase, un nuevo tipo de datos, donde los

Más detalles

Exploiting... Stack Based Buffer Overflow

Exploiting... Stack Based Buffer Overflow Exploiting... Stack Based Buffer Overflow FAMAF UNC November 10, 2015 Se puede ganar? int main () { int cookie ; char buf [80]; } gets ( buf ); // Lee hasta el primer... if ( cookie == 0 x41424344 ) printf

Más detalles

Diseño de compiladores. Representación intermedia Ambientes de ejecución

Diseño de compiladores. Representación intermedia Ambientes de ejecución Diseño de compiladores Representación intermedia Ambientes de ejecución Generación de la RI Es la ultima etapa del frontend de un compilador El objetivo es traducir el programa en el formato que espera

Más detalles

Contenido. Procesos. Programas/Procesos. Programas/Procesos. Por qué hacer uso de los Procesos? Proceso

Contenido. Procesos. Programas/Procesos. Programas/Procesos. Por qué hacer uso de los Procesos? Proceso Contenido Procesos Qué es un Proceso? Qué información requiere el Sistema de Operación para manejar los procesos? Programas/Procesos Programas/Procesos Un proceso es diferente a un programa Programa: Código

Más detalles

VARIABLES, CONSTANTES Y EXPRESIONES ASIGNACIÓN. TIPOS ELEMENTALES. PRECEDENCIA DE LOS ESTRUCTURAS DE CONTROL. CONDICIONAL E

VARIABLES, CONSTANTES Y EXPRESIONES ASIGNACIÓN. TIPOS ELEMENTALES. PRECEDENCIA DE LOS ESTRUCTURAS DE CONTROL. CONDICIONAL E Java Java es un lenguaje de programación presentado en 1995 enfocado a: soportar los fundamentos de la programación orientada a objetos. generar código independiente de la arquitectura de la computadora

Más detalles

Tecnólogo Informático- Estructuras de Datos y Algoritmos- 2009

Tecnólogo Informático- Estructuras de Datos y Algoritmos- 2009 Árboles Ejemplos de estructuras arborescentes: con forma de árbol Regla de Alcance: los objetos visibles en un procedimiento son aquellos declarados en él mismo o en cualquier ancestro de él (cualquier

Más detalles

Universidad de Pamplona Materia: Programación 1 Docente: Ing. Lusbin Raúl Vargas LENGUAJE C ESTRUCTURA DE UN PROGRAMA EN C

Universidad de Pamplona Materia: Programación 1 Docente: Ing. Lusbin Raúl Vargas LENGUAJE C ESTRUCTURA DE UN PROGRAMA EN C Universidad de Pamplona Materia: Programación 1 Docente: Ing. Lusbin Raúl Vargas LENGUAJE C ESTRUCTURA DE UN PROGRAMA EN C Directivas del procesador Main() { Declaraciones Definiciones proposiciones }

Más detalles

Módulo 08 Lenguaje Ensamblador

Módulo 08 Lenguaje Ensamblador Módulo 08 Lenguaje Ensamblador Organización de Computadoras Depto. Cs. e Ing. de la Comp. Universidad Nacional del Sur Copyright Copyright 2011-2015 A. G. Stankevicius Se asegura la libertad para copiar,

Más detalles

Es un software de simulación que ejecuta programas en lenguaje de ensamblador para procesadores con arquitectura MIPS32.

Es un software de simulación que ejecuta programas en lenguaje de ensamblador para procesadores con arquitectura MIPS32. Arquitectura de Computadoras Jose Luis Tecpanecatl Xihuitl, Ph.D. Es un software de simulación que ejecuta programas en lenguaje de ensamblador para procesadores con arquitectura MIPS32. SPIM lee e inmediatamente

Más detalles

11. Algunas clases estándar de Java (II)

11. Algunas clases estándar de Java (II) 122 A. García-Beltrán y J.M. Arranz 11. Algunas clases estándar de Java (II) Objetivos: a) Presentar la clase predefinida en Java para trabajar con arrays b) Interpretar el código fuente de una aplicación

Más detalles

Breve manual de Doxygen

Breve manual de Doxygen Breve manual de Doxygen José Daniel Franco Barrios Grupo 10 Índice - Instalación o Descarga --------- p. 3 o Instalación en Windows y Linux --------- p. 3 - Utilidad --------- p. 4-7 o Listas ---------

Más detalles