Manual para la Implementación de Programas que Integren los Lenguajes Java y Ensamblador.
Manual para la Implementación de Programas que Integren los Lenguajes Java y Ensamblador. Una guía práctica con ejemplos Versión 1.0 Unistmo Elaboró: Peniel Ruiz López
10/17/2011
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Manual para la Implementación de Programas que Integren los Lenguajes Java y Ensamblador.
Manual para la Implementación de Programas que Integren los Lenguajes Java y Ensamblador. Una guía práctica con ejemplos.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Manual para la Implementación de Programas que Integren los Lenguajes Java y Ensamblador.
Contenido 1. GENERALIDADES GENERALIDADES............................................................................................ ............................................................................................ 3 1.1 INTRODUCCIÓN. ........................................................................................... 3 1.2 OBJETIVOS. ..................................................................................................... 3 1.3 A QUIEN VA DIRIGIDO EL MANUAL........................................ ................... ........................................ ........................3 1.4 ACRÓNIMOS, ANGLICISMOS Y ABREVIATURAS EMPLEADAS . ..................... ............... ...... 3 2. EL LENGUAJE LENGUAJE JAVA JAVA ........................................................................................ 4 2.1 ¿QUÉ ES JAVA? ................................................................................................ 4 3. EL LENGUAJE ENSAMBLADOR .............................................................. 4 3.1 ENSAMBLADOR .............................................................................................. 4 3.2 ENLAZADOR................................................................................................... 4 3.3 GENERALIDADES DEL LENGUAJE .................................................................. 4 4. UTILIDAD DE LA PROGRAMACIÓN HÍBRIDA HÍBRIDA.................. .............................. ............ 5 4.1 CASO GENERAL ............................................................................................. 5 4.2 CASO PARTICULAR........................................................................................ 5 6. ENTORNOS DE DESARROLLO ............................................................... 5 6.1 ECLIPSE ............................................................................................................ 5 6.2 NETBEANS ...................................................................................................... 6 6.3 MASM32 ........................................................................................................ 6 7. JAVA 7. JAVA NATIVE INTERFACE INTERFACE......................................................................... ......................................................................... 6 7.1 INTRODUCCIÓN ............................................................................................ 6 7.2 ¿CUÁNDO USAR JNI? .................................................................................... 7 7.3 USANDO JNI PARA INVOCAR MÉTODOS NATIVOS ................................... ................... ................ 7 8. EJEMPLO DE DE JASM JASM ........................................................................................ 10
8.7 E JECUCIÓN................................................................................................... 13 9. FUNCIONES UTILES DE LA LA JNI JNI............................................................ ............................................................ 14 10. GLOSARIO DE TERMINOS TERMINOS.................................................................... .................................................................... 14 APENDICE A: LIBRERÍAS ......................................................................... 15 APENDICE B: MACROENSAMBLADOR ........................................... 18 APENDICE C: CONFIGURACION DE VARIABLES DE ENTORNO .............................................................................................................. 21 BIBLIOGRAFÍA..................................................................................................... BIBLIOGRAFÍA ..................................................................................................... 24
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Manual para la Implementación de Programas que Integren los Lenguajes Java y Ensamblador.
1. GENERALIDADES 1.1 Introducción.
Este manual surgió de la necesidad de transmitir el conocimiento adquirido durante la realización del proyecto final de la materia de Lenguaje Ensamblador. El presente manual también también pretende transmitir transmitir la estructura, conceptos e información básica básica de la Interfaz Nativa de de Java, con la finalidad de que que conociendo su funcionamiento, aquellos quienes sigan este manual, puedan implementar implementar sus programas de manera efectiva. efectiva. Por lo mencionado, es es de suma importancia, leer el manual que se detalla a continuación antes y durante el proceso de desarrollo. El manual comienza explicando las ideas básicas acerca de la programación híbrida y como sus aplicaciones, después de ello plantea una explicación del funcionamiento funcionamiento de la Interfaz I nterfaz Nativa de Java, para luego ir explicando uno a uno los pasos a seguir para llevar a cabo la implementación de funciones nativas escritas en lenguaje Ensamblador. Finalmente, se incluye un glosario con la terminología utilizada con la finalidad de hacer más entendible este material. 1.2 Objetivos.
El principal objetivo del presente manual, es brindar información detallada del proceso de integración de los lenguajes de programación antes mencionados. Así mismo se pretende que el lector tenga una idea clara del
1.3 A quien va dirigido el manual.
Este manual va dirigido a cualquier entusiasta de la programación que tenga nociones del lenguaje Java y esté familiarizado con conceptos del lenguaje Ensamblador, así como académicos que quieran aplicar estos conocimientos para la realización de sesiones prácticas relacionas con el tema o como material meramente didáctico. 1.4 Acrónimos, anglicismos y abreviaturas empleadas.
API
Application Programming Interface (Interfaz de
ASM COFF
Programación Programación de Aplicaciones). Assembly (Ensamblador). (Ensamblador). Common Object File Format (Formato de Archivo Objeto Común)
IDE JASM JDK JNI LAN Linker MP pe. Runtime TCP/IP
Integrated Development Environment
Hibridación Java-ASM. Java Development Kit (Kit de Desarrollo de Java)
Java Native Interface (Interfaz Nativa de Java). Local Area Network (Red de Área Local)
Enlazador. Microprocesador por ejemplo Tiempo de ejecución. Protocolo de Internet
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Manual para la Implementación de Programas que Integren los Lenguajes Java y Ensamblador.
2. EL LENGUAJE JAVA
3. EL LENGUAJE ENSAMBLADOR
2.1 ¿Qué es Java?
Java es un lenguaje de programación orientado a objetos, desarrollado por Sun Microsystems en 1996 y diseñado por James Gosling (Fig 1). El lenguaje en sí mismo toma mucha de su sintaxis de C y C++, pero tiene un modelo de objetos más simple y elimina herramientas herramientas de bajo nivel, que suelen inducir a muchos errores, como la manipulación directa de punteros o memoria. Con respecto a la memoria, su gestión no es un problema ya que ésta es gestionada por el propio lenguaje y no por el programador. Las aplicaciones Java están típicamente compiladas en un bytecode, aunque la compilación en código máquina nativo también es posible. En el tiempo de ejecución, el bytecode es normalmente interpretado o compilado a código nativo para la ejecución, aunque la ejecución directa por hardware del bytecode por un procesador Java también es posible. El término Java fue acuñado en una cafetería frecuentada por algunos de los miembros del equipo. Pero no está claro si es un acrónimo o no, aunque algunas fuentes señalan que podría tratarse de las iniciales de sus James Gosling, Arthur Van Hoff, y Andy creadores: James Bechtolsheim. Otros abogan por el siguiente acrónimo,
3.1 Ensamblador
Figura 1 James Gosling, trabajó durante 18 meses en Sand Hill Road en Menlo Park en el desarrollo de Java
Los ensambladores como los descritos en este trabajo son como una versión reducida y elemental de un compilador (pero que de ninguna manera deben considerarse como tales), ya que lo único que tienen que hacer es cambiar toda referencia simbólica por la dirección correspondiente, calcular los saltos, resolver referencias y llamadas a otros programas, y realizar el proceso de enlace. Los ensambladores son programas destinados a realizar el ensamblado de un determinado código. 3.2 Enlazador
Para crear un programa ejecutable a partir de un código objeto se requiere que se resuelvan las llamadas a otros programas y a los servicios del sistema operativo, y agregar las rutinas o información de run−time para que el programa pueda ser cargado a memoria y ejecutado. Este proceso es lo que se conoce como proceso de liga, y se realiza a través de un ligador, enlazador o linker que toma de entrada el código objeto y produce de salida el código ejecutable. 3.3 Generalidades del Lenguaje
Figura 2 Los 4 primeros bytes de los archivos .class que genera el compilador
El único lenguaje que entienden los microprocesadores y microcontroladores, es el código máquina formado por ceros y unos del sistema binario.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Manual para la Implementación de Programas que Integren los Lenguajes Java y Ensamblador.
El programa escrito en lenguaje ensamblador se denomina código fuente (*.asm). El programa ensamblador proporciona a partir de este fichero el correspondiente correspondiente código máquina, que suele tener la extensión (*.hex). -
4. UTILIDAD DE LA PROGRAMACIÓN HÍBRIDA 4.1 Caso General
Hay ocasiones en que es necesario acceder a un nivel más bajo por razones de operatividad e incluso de necesidad pe. -
Programas residentes que economicen memoria. Algoritmos rápidos para operaciones críticas. Parches (funciones no soportadas en LANs). etc.
La importancia del estudio de técnicas de hibridación de lenguajes radica en la posible reutilización de código escrito en un lenguaje de bajo nivel o cualquier otro. 4.2 Caso Particular
En el caso de Java y Ensamblador se pretende acceder a características no disponibles para la tecnología Java pe. OpenCL, API gráfica, gestión de nombres cortos en Windows, etc. Igualmente a veces es conveniente implementar ciertas partes de la aplicación en ASM por eficiencia pe.
renderizar gráficos 3D que requieren más tiempo de procesamiento, habrá que escribir una librería para gráficos en lenguaje ensamblador para tener un mejor rendimiento. etc.
También se intenta aprovechar las más poderosas características del lenguaje ASM tales como la de explotar las capacidades del hardware de la computadora a bajo nivel en forma eficiente, la velocidad a la que se procesan las instrucciones codificadas en este lenguaje y su flexibilidad, puesto que todo lo que puede hacerse con una máquina, puede hacerse en el lenguaje ensamblador de esta máquina.
6. ENTORNOS DE DESARROLLO 6.1 Eclipse
Eclipse (Fig. 3) es un entorno de desarrollo integrado de código abierto multiplataforma para desarrollar lo que el proyecto llama "Aplicaciones de Cliente Enriquecido", opuesto a las aplicaciones "Cliente-liviano" basadas en navegadores. Esta plataforma, típicamente ha sido usada para desarrollar entornos Figura 3 Spash Screen de la plataforma Eclipse. de desarrollo integrados, como el IDE de Java llamado Java Development Toolkit (JDT, que se entrega como
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Manual para la Implementación de Programas que Integren los Lenguajes Java y Ensamblador.
6.2 Netbeans
NetBeans (Fig. 4) es un entorno de desarrollo integrado libre, hecho principalmente para el lenguaje de programación Java. Existe además un número importante de módulos para extenderlo. NetBeans IDE es un producto libre y gratuito sin restricciones de uso.
nivel para bucles, llamadas a procedimientos y alternación (por lo tanto, MASM es un ejemplo de un ensamblador de alto nivel). Versiones posteriores agregaron la capacidad de producir programas para los sistemas operativos Windows. MASM es una de las pocas herramientas de desarrollo de Microsoft para las cuales no había versiones separadas de 16 bits y 32 bits. El proyecto MASM32 [10] ha puesto juntos una muy impresionante librería de programador, un repositorio de ejemplos de código, y una extraordinaria extraordinaria documentación para los usuarios del MASM. MASM también es soportado por una gran cantidad de páginas web y foros de discusión [9]. A pesar de la edad de este producto, sigue siendo uno de los ensambladores ensambladores en existencia mejor soportados.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Manual para la Implementación de Programas que Integren los Lenguajes Java y Ensamblador.
JNI también soporta una interfaz nativas permite incrustar una implementación implementación de la máquina virtual dentro de aplicaciones nativas (fondo de la Figura 3). Aplicaciones nativas pueden enlazarse con una biblioteca nativa que implementa la máquina virtual Java y luego usar la interfaz de invocación para ejecutar componentes escritas en lenguaje Java. Así es cómo un navegador escrito en C puede ejecutar applets en una máquina virtual embebida 7.2 ¿Cuándo usar JNI? Aplicación Java y Biblioteca
Se recomienda usar JNI cuando la aplicación requiere alguna característica del host no accesible a través de la máquina virtual, cuando se desea acceder a bibliotecas nativas, o cuando deseamos dar mayor velocidad a porciones críticas del código. Existen alternativas a JNI que implican comunicación entre procesos. Por ejemplo, cuando usamos la clase Runtime para ejecutar procesos nativos en forma concurrente. También podemos comunicar procesos vía TCP/IP, usar tecnologías para distribuir objetos como la API de Java IDL. En todos estos casos se sacrifica eficiencia por la necesaria comunicación entre procesos. 7.3 Usando JNI para invocar métodos nativos
En general el uso es simple, la mayor atención se debe poner en el paso de
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Manual para la Implementación de Programas que Integren los Lenguajes Java y Ensamblador.
1. Creación de una clase que declara un método nativo.
3.- Creación del encabezado del método nativo.
Abrimos nuestro editor de texto y pegamos el siguiente segmento de código, a continuación lo guardamos con el nombre de la clase (Hello.java).
En
//Fichero: Hello.java class Hello { public native void sayHello(); static { System.loadLibrary("hello" System.loadLibrary( "hello"); ); } public static void main(String[] args) { Hello h = new Hello(); h.sayHello (); }
la
misma
instancia
de
consola
tecleamos:
C:\> javah -jni Hello
Se generará un fichero de cabecera llamado Hello.h. En este caso su contenido esencial es: JNIEXPORT
void
JNICALL Java_Hello_sayHello(JNIEnv *, jobject);
La implementación C del método tiene un nombre que alude al código Java de origen, nombre de la clase y nombre del método. Aun cuando el método Java no tiene argumentos, su implementación considera dos. El primer argumento de toda implementación de método nativo es un puntero a
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Manual para la Implementación de Programas que Integren los Lenguajes Java y Ensamblador.
No olvidar codificar la función main si trabajamos en el ambiente Dev-C++ ya que de otra forma no se compilara correctamente el fichero. Se debe incluir encabezados según la implementación que hagamos. El código es C convencional. 5.- Compilación del código C y creación de la biblioteca de ligado dinámico.
Esto depende del sistema operativo nativo. En este caso será Windows. Para el compilador gcc (el mismo usado por Dev-C++) primero creamos el archivo objeto, la sintaxis es: gcc -c -I"C:\jdk1.x\include" -I"C:\jdk1.x\include\win32" -o
En este:
nuestro
caso
el
contenido
seria
EXPORTS Java_Hello_sayHello
Una vez creado este archivo procedemos a ejecutar lo siguiente para la creación de la dll. gcc -shared -o hello.dll hello.o hello.def
Este otro comando funciona con Microsoft Visual C++ 5.0 y genera la librería dinámica directamente: cl Hello.c -Fhello.dll -LD
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Manual para la Implementación de Programas que Integren los Lenguajes Java y Ensamblador.
El
resultado
de
hacer
esto
sería:
Hello World!
Java también admite especificar el directorio de la biblioteca con la opción Djava.library.path, en este caso: C:\>java -Djava.library.path = C:\directorio-de-la biblioteca\ HelloWorld
8. EJEMPLO DE JASM 8.1 Introducción
8.2 Algunos Consejos Antes de Comenzar
Primero que nada sugiero revisar detenidamente cada uno de los apéndices, en los que se incluye información útil acerca del entorno general en el que trabajaremos. Se sugiere la el uso de un makefile, o archivo por lotes ejecutable (.bat) es decir un archivo conteniendo en orden los comandos necesarios para la compilación y enlace de nuestro proyecto. Para este ejemplo el archivo por lotes seria: @ECHO OFF CD "Desktop" javac Calculadora.java javah -jni Calculadora IF EXISTS Operadores.obj DEL Operadores.obj
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Manual para la Implementación de Programas que Integren los Lenguajes Java y Ensamblador.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Manual para la Implementación de Programas que Integren los Lenguajes Java y Ensamblador.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Manual para la Implementación de Programas que Integren los Lenguajes Java y Ensamblador.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Manual para la Implementación de Programas que Integren los Lenguajes Java y Ensamblador.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Manual para la Implementación de Programas que Integren los Lenguajes Java y Ensamblador.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.