Computadores y Comunicaciones. Práctica de Laboratorio: Software



Documentos relacionados
Computadores y Redes de Computadores. Práctica de Laboratorio: Software

Entre los más conocidos editores con interfaz de desarrollo tenemos:

INSTALACIÓN DE UBUNTU SERVER 12.4 EN MÁQUINA VIRTUAL

Practica 01: Programación en C bajo Linux y funciones

Cómo compilar y ejecutar programas en ĺınea de comandos

INSTALACIÓN DE UBUNTU SERVER 12.4 EN MÁQUINA VIRTUAL

Creacion de Script. Que es un Script?

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

Tutorial de Eclipse CDT

El Entorno Integrado de Desarrollo Dev-C++ (Ayuda básica para las primeras sesiones de prácticas)

INSTALACION MANUAL DE ECLIPSE EN UBUNTU

ESCENARIOS CLIMÁTICOS DE CORTO PLAZO ENTORNO DE MODELACIÓN

Universitat Oberta de Catalunya. Entorno de trabajo. Miquel Albert Gerard Enrique

Instalación de Sage bajo Windows

Guía de Instalación de Java y jedit. Alumno Colaborador de la Asignatura

Servicio de Informática Vicerrectorado de Tecnologías de la Información y la Comunicación

PRÁCTICA 8 CONFIGURACIÓN DHCP EN FEDORA, DEBIAN Y OPEN SUSE:

Introducción al Dev-C++

Tutorial como conectarse a una VPN utilizando OpenVPN

Análisis de aplicación: Skipfish

TIPOS DE COPIAS DE SEGURIDAD EN LINUX

Computadores y Comunicaciones. Práctica de Laboratorio: Diseño de una aplicación basada en el modelo cliente-servidor

Objetivos. El alumno conocerá los elementos indispensables de un ambiente de programación y será capaz de realizar programas básicos en lenguaje C.

WEB HOSTING IPLAN INSTALACIÓN DE APLICACIONES PARA FTP

Manual de Instalación Declaración y Liquidación Modelos

GUÍA RÁPIDA DE TRABAJOS CON ARCHIVOS.

PRACTICA 6.6 VPN Logmein Hamachi registrarse en la página instalación,

Informática 1 Grado en Matemáticas

MANUAL DE AYUDA MÓDULO GOTELGEST.NET PREVENTA/AUTOVENTA

Ubuntu Server HOW TO : SQUID. EN ESTE SE REALIZA LO SIGUIENTE: En este how to se le va a enseñar como instalar servidor proxi Squid.

INSTALACIÓN Y UTILIZACIÓN DEL COMPILADOR GFORTRAN

TEMA 3. EL PROCESO DE COMPILACIÓN, DEL CÓDIGO FUENTE AL CÓDIGO MÁQUINA

Instalación de un servidor DHCP

Práctica 0. Emulador XENON de la computadora CESIUS

TEMA 3: EL LENGUAJE C: PRESENTACIÓN

SISTEMA CABILDO MANUAL DE INSTALACIÓN CLIENTE ERP CABILDO LA SOLUCIÓN TECNOLÓGICA MÁS COMPLETA E INTEGRAL PARA GOBIERNOS LOCALES

Práctica 3 Manejo de GCC y ejecución de programas por consola. Computador Compilador Editor de texto o IDE

Tutorial: Python + Soap Web Service. Daniel Montenegro Cordero

GIMP, aplicaciones didácticas. Instalación de GIMP

Presentación: Nombre: Matrícula: Grupo: Asignatura: Tema: Instructor:

SIMPLESFONDOS. Contenido

Los sistemas operativos

Guía de Instalación del servicio de BackupOnline de Idecnet. Indice

Maxima y L Y X, amigos para siempre

Tutorial de Introducción a la Informática Tema 0 Windows. Windows. 1. Objetivos

PEDRO REVERTE GÓMEZ SERVICIOS DE RED E INTERNET / IMPLANTACIÓN DE APLICACIONES WEB 2º ASIR

Instalación de OpenMPI

Manual de Instalación del Certificado ACA en Windows 8.1

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

1. El entorno de desarrollo Eclipse

Tutorial. Configuración del entorno de programación Code::Blocks.

LINUX OPENSUSE 10.2 (BASICO+AVANZADO)

ESCUELA POLITÉCNICA NACIONAL 28 DE OCTUBRE, 2015 ORTIZ JÁCOME LEONARDO JOSÉ

Profesor: José Luis Di Biase

Descarga e instalación de Visual Basic. Entorno de programación (IDE). Visual Studio (CU00304A)

Soporte lógico de computadoras

MACROS Y FORMULARIOS

SISTEMA DE APOYO PARA IDENTIFICACIÓN Y ESTIMACIÓN DE VOLUMETRÍA DE NÓDULOS PULMONARES. MANUAL DE INSTALACIÓN

Práctica 1. Introducción al SIEMENS 80C167

INTRODUCCIÓN AL TIPO COMPUESTO CADENA CONTENIDOS

Instituto Tecnológico de Las América. Materia Sistemas operativos III. Temas. Facilitador José Doñe. Sustentante Robín Bienvenido Disla Ramirez

MANUAL PARA CREAR UNA RED CON MAQUINAS VIRTUALES

Tesseract para el euskera

DIRECCIÓN DE SISTEMAS DE INFORMACIÓN DEPARTAMENTO CERES

ESCENARIOS CLIMÁTICOS DE CORTO PLAZO ENTORNO DE MODELACIÓN

PRÁCTICA 1-2: INSTALACIÓN Y ADMINISTRACIÓN DE UN SERVIDOR DNS (PRIMARIO Y ZONA DE RESOLUCIÓN DIRECTA E INVERSA EN WINDOWS 2008 SERVER)

Unidad III El lenguaje de programación C

MANUAL DE AYUDA INSTALACIÓN VERSIÓN DEMO

Instructivo de funcionamiento helppeople Cloud Viewer

osoftware para Aprendizaje de Sistemas Operativos IA-32 (en Windows de 32 Bits)

Versión 1.0. Instalación de lectora de tarjeta inteligente en Linux

Para ingresar a la aplicación Microsoft Word 97, los pasos que se deben seguir pueden ser los siguientes:

Gestión de usuarios en la web educativa del centro con JOOMLA!

Dando nuestros primeros pasos con 3DS Max. 1. Objetivos

INSTALAR UBUNTU DESDE WINDOWS

Animalandia. Manual de instalación. (Actualizado: Sept-2015) Fernando Lisón Martín

SISTEMAS INFORMÁTICOS EN TIEMPO REAL 2º Ingeniería Industrial MANUAL DE HERRAMIENTAS SOFTWARE PARA PROGRAMACIÓN EN UNIX

Internet aula abierta

Desarrollo de Aplicaciones Web Por César Bustamante Gutiérrez. Módulo I: Conceptos Básicos Tema 1: Concepto iniciales.

IPv6 Servicios HTTP. Objetivo. Introducción Teórica. Detalle del Experimento

Servidor DNS. DNSmasq. Rocío Alt. Abreu Ortiz

Informática I para Bachillerato

Solución al Primer Reto

Inducción al Laboratorio de Informática

Manual de configuración de Adobe Reader para la validación de la firma de un documento Versión 1.0

TALLER DE CONOCIMIENTOS APRENDICES JORGE LEONARDO MAZA CARLOS DAVID ZAMBRANO JOSE G. RODRIGUEZ PROFESOR RONALD MARTELO

Caso práctico de Cuadro de Mando con Tablas Dinámicas

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

3.1 Introducción a Wireshark

PROCEDIMIENTO OPERATIVO DESARROLLAR SISTEMAS INFORMÁTICOS PDO-COCTI-DTIN-04

INSTRUCCIONES DE ACTUALIZACION LETAB1019

CENTRO DE APOYO TECNOLÓGICO A EMPRENDEDORES, BILIB RECETA TECNOLÓGICA REALIZACIÓN DE COPIAS DE SEGURIDAD CON GSYNC

Configuración del cliente de correo Microsoft Outlook

Que es PHP? Que se puede hacer con PHP? Sintaxis del lenguaje. Variables. Operadores básicos. Condicionales. Ciclos.

LIESH. Fco. Javier Bohórquez Ogalla

WinHIPE: edición, compilación y ejecución de programas; y generación de animaciones web. Manual de usuario.

Anexo VII Manual token AudioPass Preparado por Centro de Ensayos de Software para AGESIC Verificación de compatibilidad de tokens Marzo de 2015

Instalando el Apache

Transcripción:

Práctica de Laboratorio: Software Julián Viejo Cortés Jorge Juan Chico Marzo 2008

Índice de contenidos 1. Introducción...2 2. Ejemplo 1: Suma de números en ensamblador...2 3. Ejemplo 2: Suma de una lista de números en C...3 4. Ejemplo 3: Suma de dos números en C...4 5. Ejemplo 4: Hola Mundo en C...4 1

1 Introducción Esta práctica de laboratorio tiene como objetivo mostrar el funcionamiento del software a nivel de lenguaje ensamblador. Para ello, se han desarrollado una serie de ejemplos sobre un sistema Ubuntu/Linux, en concreto: Ejemplo 1: Suma de una lista de números en ensamblador. Ejemplo 2: Suma de una lista de números en C. Ejemplo 3: Suma de dos números en C. Ejemplo 4: "Hola mundo" en C. En todos los casos, se proporcionará a los alumnos el código fuente de los programas, de forma que el trabajo a realizar consiste en completar las diferentes fases. Para la realización de los ejemplos anteriores es necesario instalar una serie de herramientas que nos permitirán, entre otras tareas, compilar un programa escrito en C, generar el código ensamblador del programa, depurar dicho código usando un depurador, etc. En concreto, vamos a emplear los siguientes programas: yasm - Ensamblador para x86 y x86-64 gcc - Compilador de GNU ld - Enlazador de GNU kdbg - Depurador/debugger de KDE Además, es necesario utilizar un editor de texto plano (vi, nano, gedit, etc.) para la visualización del contenido de los archivos. En un sistema Ubuntu o similar (Debian, etc.) puede instalar estos programas escribiendo en un terminal el siguiente comando: $ sudo apt-get install build-essential yasm kdbg Aún así, es fácil adaptar estos ejemplos para ser usados con otras herramientas o sistema operativo. 2 Ejemplo 1: Suma de números en ensamblador En este primer ejemplo vamos a partir de un programa escrito en lenguaje ensamblador, teniendo los alumnos que realizar las siguientes tareas: 1. Analizar el código ensamblador proporcionado, usando un editor de texto: $ gedit suma.s 2. Ensamblar el programa (ejecutar en un terminal el siguiente comando): 2

Arquitectura de 32 bits $ yasm -f elf -g dwarf2 -o suma.o suma.s Arquitectura de 64 bits $ yasm -m amd64 -f elf -g dwarf2 -o suma.o suma.s 3. Enlazar el programa: $ ld -o suma suma.o 4. Realizar una ejecución del programa en el depurador : $ kdbg suma Abrir las ventanas de registros y memoria. Poner un punto de ruptura en la línea 21: movl $x, %ecx. Iniciar la ejecución. Ejecutar una instrucción (F10). Observar el valor de ecx y localizar este valor en la ventana de memoria. Observar que los valores almacenados corresponden a los indicados en el programa. Ejecutar paso a paso (F10) y observar cómo varían los registros y cómo se ejecuta el bucle hasta salir de él. Al finalizar, observar cómo se almacena el resultado en la dirección correspondiente. Nota: En las arquitecturas de 64 bits los registros toman nombres diferentes: rax, rbx, etc. 3 Ejemplo 2: Suma de una lista de números en C En este ejemplo, se parte de un programa escrito en lenguaje C y se pretende introducir en la lista de acciones del ejemplo anterior un nuevo proceso: el proceso de compilación. De esta forma, es necesario completar las siguientes tareas: 1. Analizar el código C proporcionado, usando un editor de texto: $ gedit suma1.c 2. Generar el código ensamblador y compararlo con el programa del ejemplo 1: $ gcc -S suma1.c 3. Compilar el programa (sólo compilar): $ gcc -c suma1.c 4. Compilar y enlazar : $ gcc -g -o suma1 suma1.c 3

5. Realizar una ejecución del programa en el depurador : $ kdbg suma1 Poner un punto de ruptura al comienzo de la función main. Iniciar la ejecución. Ejecutar una instrucción (F10). Ejecutar paso a paso (F10) y observar cómo varía el valor de las variables. Al final, observar el resultado en la ventana de salida. 4 Ejemplo 3: Suma de dos números en C Este ejemplo es análogo al anterior. Deben completarse las siguientes tareas: 1. Analizar el código C proporcionado, usando un editor de texto: $ gedit suma2.c 2. Generar el código ensamblador. Observar el código generado, localizar la función principal (main) e intentar reconocer las asignaciones de variables y operación de suma : $ gcc -S suma2.c 3. Compilar y enlazar: $ gcc -g -o suma2 suma2.c 6. Realizar una ejecución del programa en el depurador : $ kdbg suma2 Abrir la ventana de registros. Poner un punto de ruptura en la línea 3. Iniciar la ejecución. Ejecutar paso a paso (F10) y observar cómo varían los valores de las variables. Al finalizar, observar si algún registro tiene el mismo valor que la variable c. Este registro es el que se ha usado para hacer las operaciones. Cotejar esta observación con el código ensamblador generado anteriormente. 5 Ejemplo 4: Hola Mundo en C Este ejemplo es análogo a los dos anteriores. Deben completarse las siguientes tareas: 1. Analizar el código C proporcionado, usando un editor de texto: 4

$ gedit hola.c 2. Generar el código ensamblador. Observar el código generado, localizar la función principal (main) y observar la llamada a la función de la biblioteca "puts": $ gcc -S hola.c 3. Compilar y enlazar el programa: $ gcc -g -o hola hola.c 4. Ejecutar el programa en un terminal: $./hola 5. Realizar una ejecución del programa en el depurador : $ kdbg hola Poner un punto de ruptura en la línea 3. Iniciar la ejecución. Ejecutar paso a paso (F10) y observar la frase que aparece en la ventana de salida. 5