Está en la página 1de 15

Introduccin

MSI Jos Luis Carreo Arteaga jcarreno53@ yahoo.com.mx


Universidad Autnoma de Quertaro

Jos Luis Carreo Arteaga

Programacin de bajo nivel

Pgina 1

Objetivo del presente curso

Al finalizar el curso el alumno podr escribir sistemas estructurados de manera modular utilizando para ello los lenguajes C, Ensamblador y Mquina, usando herramientas de plataforma cruzada y aplicando conceptos de Ingeniera Inversa

Jos Luis Carreo Arteaga

Programacin de bajo nivel

Pgina 2

Razones para seguir utilizando lenguajes de bajo nivel Para construir un sistema genuinamente confiable, se necesita verificar el cdigo mquina el cual puede ser creado a mano o que es obtenido por la salida de un compilador. [Jensen, Jonas B.]. Una motivacin para verificar cdigo de bajo nivel es que los sistemas reales estn construidos de componentes escritos en diferentes lenguajes; el cdigo mquina es la nica lingua franca que resulta de la composicin de todos estos lenguajes. El cdigo mquina se presenta casi sin tipo. Cualquier palabra en la memoria o un registro se puede tratar como un valor escalar, un apuntador o un apuntador a cdigo debido a que los patrones de codificacin hacen posible esta flexibilidad.

Jos Luis Carreo Arteaga

Programacin de bajo nivel

Pgina 3

Objetivo de portabilidad
[Logan, Syd] La razn principal para utilizar un estndar y compartir sistemas construidos es que los desarrolladores pueden moverse entre mquina mientras se encuentran el la fase de desarrollo Los ambientes de desarrollo integrado (Integrated development environment IDE) tal como los que utiliza Microsoft Visual Sutdio .NET o Apples Interface Builder inhiben el desarrollo de sistemas portables, sin mencionar la generacin de cdigo portable.

Jos Luis Carreo Arteaga

Programacin de bajo nivel

Pgina 4

Administracin de Cdigo Fuente


[Worth, D. J. et al] Existen dos herramientas para administrar cdigo fuente (source code management SCM):
CVS (Concurrent Versions System) SVN Subversion

CVS permite que los desarrolladores que trabajan por separado, funcionen como un equipo. La historia de la versin es almacenada en un servidor central nico y los clientes poseen una copia de todos los archivos que los desarrolladores estn trabajando. Debe existen una red entre el servidor y los clientes para que se puedan realizar transacciones CVS (tal como verificaciones o modificaciones) pero no necesitan estar conectadas para editar o manipular las versiones actuales de los archivos. SVN est destinado a ser mejor que CVS, debido a que tiene ms estructuras que CVS. Generalmente las interfaces de SVN para una estructura en particular son similares a CVS excepto en donde existen razones convincentes para no hacerlo.

Jos Luis Carreo Arteaga

Programacin de bajo nivel

Pgina 5

Estndares de Plataforma Cruzada (Portabilidad) [Logan, Syd] Portabilidad es la medida de la facilidad en la que el software puede ser desarrollado para ser ejecutado con xito en ms de un sistema operativo o plataforma. El lenguaje C ha sido considerado portable desde 1970 cuando fue escrito por K&R y es bien conocido que el sistema operativo UNIX se le puede encontrar en diferentes plataformas debido a que la mayora de los sistemas operativos han sido escritos en lenguaje C. Los esfuerzos de estandarizacin (el estndar ms reciente C99) han hecho ms portable al lenguaje de programacin. Programando con los estndares ANSI y evitando las extensiones introducidas por el compilador, es un paso importante para eliminar los problemas de portabilidad en C. Se puede instruir al compilador para que acepte construcciones del lenguaje basadas en estndares y rechace cualquier extensin proporcionada por el compilador

Jos Luis Carreo Arteaga

Programacin de bajo nivel

Pgina 6

Estndares de Plataforma Cruzada (Portabilidad)

La funcionalidad de un sistema portable no nativo puede ser convertida a portable utilizando interfaces estndar y bibliotecas de portabilidad tales como NSPR. La portabilidad puede ser mejorada tambin utilizando los estndares POSIX, IEEE1003 para las interfaces de sistemas operativos, el estndar SVID y finalmente XPG La familia de compiladores GCC soporta tres de los anteriores estndares. Si se desarrolla con Cygwin y GCC sobre el sistema operativo Microsoft Windows tambin se asegura la portabilidad [Logan, Syd]

Jos Luis Carreo Arteaga

Programacin de bajo nivel

Pgina 7

Estndares de Plataforma Cruzada (Portabilidad)

Cada plataforma proporciona su propio juego de herramientas para construir interfaces grficas nativas de usuario (graphical user interface GUI). Ninguna de estas herramientas es cdigo compatible. Sin embargo, existen herramientas tales como Qt, Gtk+ y wxWidget que se pueden encontrar en diferentes sistemas operativos y que permiten desarrollar GUI.

Jos Luis Carreo Arteaga

Programacin de bajo nivel

Pgina 8

Desarrollo de Software para Plataforma Cruzada


De manera conceptual , los diferentes sistemas operativos que son ofrecidos por diferentes vendedores son similares. Todos ellos proporcionan el mismo conjunto de abstracciones para realizar la funcionalidad del sistema. Sin embargo, sus interfaces para programar aplicaciones (API) para acceder la funcionalidad del sistema difieren considerablemente. Por ejemplo, en la API de Windows de Microsoft un nuevo proceso es iniciado utilizando la llamada a sistema CreateProcess(). En UNIX esta tarea es realizada mediante dos llamadas: fork() para crear un proceso y exec() para que el proceso creado ejecute un nuevo programa [Blochinger, Wolfgang] Se ha propuesto el patrn de diseo fachada envoltorio como una solucin al problema de heterogeneidad. El principio fundamental que subyace en el patrn de diseo fachada envoltorio es la encapsulacin de las llamadas al sistema de bajo nivel construidas en C, las funciones de biblioteca y las estructuras del sistema operativo. Los elementos ms importantes del patrn de diseo fachada envoltorio son:
Las Funciones API: conjunto de llamadas al sistema, funciones de biblioteca y estructuras de dato relacionadas de una plataforma dada. La Fachada Envoltorio: Una o ms clases que encapsulan los elementos de la interfaz de llamada a sistema. Las clases integran estos elementos en interfaces ms abstractas Jos Luis Carreo Arteaga Programacin de bajo nivel Pgina 9

El patrn Fachada
Una clase que utiliza el patrn Facade proporciona una interfaz unificada para un conjunto de interfaces en un subsistema. El patrn Facade define una interfaz a alto nivel que hace que el subsisema sea ms fcil y seguro de utilizar. [Gamma, Erik et al] Cuando una interfaz es muy complicada de utilizar de manera efectiva (ayuda con el uso impropio) o no se utiliza un estilo de programacin bien definido para desarrollar sobre una plataforma extensa, se debe considerar el uso del patrn fachada. Una fachada es una clase con una interfaz simple y clara la cual encapsula y oculta un conjunto complicado de clases y/o funciones [Ezust, Alan et al]

Jos Luis Carreo Arteaga

Programacin de bajo nivel

Pgina 10

Por qu utilizar Cygwin


[Allen Christopher T. S.] Cygwin son un conjunto de herramientas las cuales son portadas de manera directa de las herramientas de desarrollo GNU para Microsoft Windows Cygwin proporciona un conjunto de herramientas las cuales entre otras cosas contienen compiladores GNU, la herramienta make y una pltora de bibliotecas las cuales pueden ser accedidas y utilizadas.

Jos Luis Carreo Arteaga

Programacin de bajo nivel

Pgina 11

La plataforma de desarrollo cruzado wxWidget


La plataforma de desarrollo wxWidget consiste de ms de 500 clases y una extensin de 500 KLOC [Telea, Alexandru et al] Aunque en la arquitectura de wxWidget no existe nada que indique que se utiliz el patrn fachada envoltorio como una capa necesaria para envolver la funcionalidad de las llamadas al sistema operativo huesped, se encuentra comentada en [Smart, Julian et al]. Es ms que una herramienta de desarrollo de Interfaces Grficas de Usuario (GUI) debido a que considera muchos aspectos del desarrollo de una aplicacin. wxWidget proporciona clases para manipulacin de archivos y flujo de informacin, utilizacin de multi-hilo, puesta a punto de aplicaciones, comunicacin entre procesos, ayuda en lnea, acceso a bases de datos y mucho ms.
Jos Luis Carreo Arteaga Programacin de bajo nivel Pgina 12

La plataforma de desarrollo cruzado wxWidget


La representacin pictrica de la arquitectura de wxWidget se muestran en la Figura 1

Fig 1 Arquitectura de wxWidget

Jos Luis Carreo Arteaga

Programacin de bajo nivel

Pgina 13

Actividad 1.1
Instalar y documentar Cygwin Instalar y documentar wxWidget sobre Cygwin Probar y documentar el compilador cruzado x86_64-w64mingw32-gcc en Cygwin Probar y documentar nasm con los ejemplos del manual sobre Cygwin Probar y documentar svn para Cygwin Durante el resto del curso se desarrollar en Cygwin. No debe ser necesario mencionar que todas las actividades sern realizadas en esta plataforma. Probar y documentar Eclipse CDT sobre Cygwin

Jos Luis Carreo Arteaga

Programacin de bajo nivel

Pgina 14

Referencia
1. [Allen Christopher T. S.] Eclipse.org CDT and Cygwin: A Tutorial on Instalation and Functionality. University of Rhode Island. 2010 [Blochinger, Wolfgang] Cross-Platform Development of High Performance Applications Using Generic Programming. BOOKTITLE = {Proc.\ of the IASTED Intl.\ Conference Parallel and Distributed Computing and Systems ({PDCS} 2003)} [Ezust, Alan et al] An Introduction to Design Patterns in C++ with Qt 4, 2nd Edition. ISBN 978-0-13282645-7. 2012 [Gamma, Erik et al] Desing Patterns; ISBN: 0201633612. 1995 [Jensen, Jonas B. et al] High-level separation logic for low-level code. ITU Copenhagen 2012 [Logan, Syd] Building Cross-Platform Development in C++. Building Mac OS X, Linux and Windows Applications ISBN: 0-321-24642-X. 2008 [Smart, Julian et al] Cross-Platform GUI Programming with wxWidgets. ISBN 0-13-147381-6. 2006 [Telea, Alexandru et al] Architecting an Open System for Querying Large C and C++ Code Bases. CiteSeer 2008 [Worth, D. J. et al] Comparison of CVS and Subversion. Technical Report. 2006

2.

3.

4. 5. 6.

7. 8.

9.

Jos Luis Carreo Arteaga

Programacin de bajo nivel

Pgina 15

También podría gustarte