100% encontró este documento útil (1 voto)
12K vistas4 páginas

Programación Híbrida

La programación híbrida permite aprovechar las ventajas de los lenguajes de alto nivel y ensamblador al permitir incluir código ensamblador en programas de lenguajes de alto nivel como Pascal para escribir programas más rápidos y eficientes. Turbo Pascal incluye las palabras reservadas Assembler y Asm para esto. La programación híbrida combina las ventajas de ambos tipos de lenguajes.

Cargado por

lupithavazquez
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
100% encontró este documento útil (1 voto)
12K vistas4 páginas

Programación Híbrida

La programación híbrida permite aprovechar las ventajas de los lenguajes de alto nivel y ensamblador al permitir incluir código ensamblador en programas de lenguajes de alto nivel como Pascal para escribir programas más rápidos y eficientes. Turbo Pascal incluye las palabras reservadas Assembler y Asm para esto. La programación híbrida combina las ventajas de ambos tipos de lenguajes.

Cargado por

lupithavazquez
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

PROGRAMACION HIBRIDA LENGUAJE DE PROGRAMACION

La programación híbrida proporciona un mecanismo por medio del cual podemos


aprovechar las ventajas del lenguaje ensamblador y los lenguajes de alto nivel,
todo esto con el fin de escribir programas más rápidos y eficientes.
Turbo Pascal permite escribir procedimientos y funciones en código ensamblador
e incluirlas como parte de los programas en lenguaje Pascal; para esto, Turbo
Pascal cuenta con dos palabras reservadas: Assembler y Asm.
Assembler permite indicarle a Turbo Pascal que la rutina o procedimiento que se
está escribiendo está totalmente escrita en código ensamblador.
Por otro lado, Asm nos permite incluir bloques de instrucciones en lenguaje
ensamblador en cualquier parte del programa sin necesidad de escribir
procedimientos completos en ensamblador.
En la programación software, sistemas híbridos inteligentes denotan a los
sistemas software que emplean, en paralelo, una combinación de modelos de
inteligencia artificial, métodos y técnicas de éstos subcampos

Cada sistema inteligente natural es un híbrido porque éstos desarrollan


operaciones mentales tanto en niveles simbólicos como sub-simbólicos. Desde
hace pocos años se ha ido desarrollando una discusión sobre la importancia en la
inteligencia artificial de la integración de todos éstos sistemas. Basados en las
nociones de que se habían ya creado simples y específicos sistemas de
inteligencia artificial (como sistemas para la visión de computadores, síntesis del
habla, etc., o software que emplean alguno de los modelos mencionados arriba)
algunos autores proponen aque es ahora el momento de la integración para crear
complejos, grandes sistemas de inteligencia artificial. Investigadores destacados
sobre estas ideas son Marvin Minsky, Aaron Sloman, Deb Roy, Kristinn R.
Thórisson y Michel Arbib.

La metodología de diseño Creacionista (CDM, por sus siglas en inglés) (nótese en


su nombre referencias al deseo humano de ser el Arquitecto) es una filosofía de
desarrollo software diseñado específicamente para la creación de grandes
sistemas A.I. CDM está basado en pasos de diseño iterativos que guíen hacia la
creación de una red de llamados módulos interactivos, que se comunican por
flujos tipados explícitos y mensajes discretos.

La organización Mindmakers es un portal online para la gente que trabaja en la


integración e incremento de la coloboración en el campo de la Inteligencia Artificial

Al trabajar con un lenguaje de alto nivel, en ocasiones nos encontramos con el


problema de que necesitamos que haga determinada función o trabajo pero
desafortunadamente ésta solo existe en otro lenguaje que no es el que
PROGRAMACION HIBRIDA LENGUAJE DE PROGRAMACION

necesitamos utilizar, o simplemente, no encontramos esa función en ningún


lenguaje de alto nivel.
Ventajas de la Programación Híbrida
 Para mejorar la escalabilidad
 Cuando muchas tareas producen desbalanceo
 Aplicaciones que combinan paralelismo de grano grueso y fino
 Reducción del tiempo de desarrollo de código
 Cuando el número de procesos MPI es fijo
 En caso de mezcla de paralelismo funcional y de datos

En este momento el lenguaje ensamblador constituye una herramienta no solo


eficaz, sino simple para producir un parche para el compilador de nuestro lenguaje
preferido.
Tal vez el mayor problema con el que nos enfrentemos sea el de cómo conectar
ambos programas (el de alto y el de bajo niveles) y cómo pasar variables de un
programa al otro.
Para conseguir nuestro objetivo se utilizan pseudo-operadores, es decir,
instrucciones que aparecen en el código fuente del ensamblador pero que no
generan ninguna instrucción de máquina, pero proporcionan directivas para que el
ensamblador pueda operar con datos, ramificaciones condicionales, generación de
listados y con macros durante el proceso de ensamble.

Directivas para compilación híbrida.


La programación en lenguaje ensamblador proporciona un mayor control sobre el
hardware de la computadora, pero también dificulta la buena estructuración de los
programas. La programación híbrida proporciona un mecanismo por medio del
cual podemos aprovechar las ventajas del lenguaje ensamblador y los lenguajes
de alto nivel, todo esto con el fin escribir programas más rápidos y eficientes.
Ejemplo de un programa con un bloque de instrucciones en ensamblador:
{ Este programa muestra como se construye un programa híbrido utilizando un
bloque Asm… End; en Turbo Pascal. El programa solicita que se introduzcan dos
número, después calcula la suma por medio de la instrucción Add de ensamblador
y finalmente imprime el resultado en la pantalla.} Program hibrido;
Uses Crt;
Var
N1,N2,Res : integer;
Writeln(“Introduce un número: “);
Readln(N1);
Writeln(“Introduce un número: “);
Readln(N2);
Mov AX,N1;
PROGRAMACION HIBRIDA LENGUAJE DE PROGRAMACION

Add AX,N2;
End;
Writeln(“El resultado de la suma es: “,Res);
Readln;
End.
El programa del listado 24 realiza la suma de dos cantidades enteras (N1 y N2)
introducidas previamente por el usuario, después almacena el resultado en la
variable Res y finalmente presenta el resultado en la pantalla.
El lenguaje ensamblador no cuenta con funciones de entrada y salida formateada,
por lo cual es muy complicado escribir programas que sean interactivos, es decir,
programas que soliciten información o datos al usuario. Es aquí donde podemos
explotar la facilidad de la programación híbrida, en el programa anterior se utilizan
las funciones Readln y Writeln para obtener y presentar información al usuario y
dejamos los cálculos para las rutinas en ensamblador.
En el siguiente listado nos muestra la forma de escribir programas completos
utilizando procedimientos híbridos. {Este programa solicita al usuario que presione
alguna tecla, cuando la tecla es presionada, ésta se utiliza para rellenar la
pantalla.
El programa termina cuando se presiona la tecla enter.
El programa utiliza tres procedimientos:
Limpia_Pantalla: Este se encarga de borrar la pantalla
Cursor_XY: Este procedimiento reemplaza al Goto XY de Pascal
Imprime_Car: Este procedimiento imprime en pantalla el carácter que se le pasa
como parámetro. }
Definición De Bloques.
NAME nombre_modulo_objeto: indica el nombre del módulo objeto. Si no se
incluye NAME, se tomará de la directiva TITLE o, en su defecto, del nombre del
propio fichero fuente.
GROUP segmento1, segmento2,... permite agrupar dos o más segmentos
lógicos en uno sólo de no más de 64 Kb totales (ojo: el ensamblador no
comprueba este extremo, aunque sí el enlazador). Ejemplo:
Cuando se accede a un dato definido en algún segmento de un grupo y se
emplea el operador OFFSET es preciso indicar el nombre del grupo como prefijo,
de lo contrario el ensamblador no generará el desplazamiento correcto ¡ni emitirá
errores!:
MOV AX,dato ; ¡incorrecto!
MOV AX,supersegmento:dato ; correcto
LABEL: Permite referenciar un símbolo con otro nombre, siendo factible
redefinir el tipo. La sintaxis es: nombre LABEL tipo (tipo = BYTE, WORD,
DWORD, NEAR o FAR). Ejemplo: En el ejemplo, con MOV AX,palabra se
accederá a ambos bytes a la vez (el empleo de MOV AX,byte_bajo daría error: no
PROGRAMACION HIBRIDA LENGUAJE DE PROGRAMACION

se puede cargar un sólo byte en un registro de 16 bits y el ensamblador no supone


que realmente pretendíamos tomar dos bytes consecutivos de la memoria).
STRUC - ENDS: permite definir registros al estilo de los lenguajes de alto
nivel, para acceder de una manera más elegante a los campos de una
información con cierta estructura. Estos campos pueden componerse de
cualquiera de los tipos de datos simples (DB, DW, DD, DQ, DT) y pueden ser
modificables o no en función de si son simples o múltiples, respectivamente: La
anterior definición de estructura no lleva implícita la reserva de memoria necesaria,
la cual ha de hacerse expresamente utilizando los ángulos '':
En el ejemplo se definen los campos modificables (los únicos definibles) dejando
sin definir (comas consecutivas) los no modificables, creándose la estructura
'felipe' que ocupa 27 bytes. Las cadenas de caracteres son rellenadas con
espacios en blanco al final si no alcanzan el tamaño máximo de la declaración. El
TASM es más flexible y permite definir también el primer elemento de los campos
múltiples sin dar error. Tras crear la estructura, es posible acceder a sus
elementos utilizando un (.) para separar el nombre del campo:
LEA BX,felipe
MOV CL,[BX].peso ; equivale a [BX+12]
RECORD: similar a STRUC pero operando con campos de bits. Permite
definir una estructura determinada de byte o palabra para operar con comodidad.
Sintaxis: Donde nombre permitirá referenciar la estructura en el futuro,
nombre_de_campo identifica los distintos campos, a los que se asigna un tamaño
(en bits) y opcionalmente un valor por defecto.
La estructura registro totaliza 7 bits, por lo que ocupa un byte. Está dividida en
tres campos que ocupan los 7 bits menos significativos del byte: el campo A ocupa
los bits 6 y 5, el B los bits del byte: el campo A ocupa los bi1 al 4 y el C el bit 0:
La reserva de memoria se realiza, por ejemplo, de la siguiente manera:
reg1 registro
Quedando reg1 con el valor binario 1001011 (el campo B permanece inalterado y
el A y C toman los valores indicados). Ejemplos de operaciones soportadas:
MOV AL, A ; AL = 5 (desplazamiento del bit
; menos significativo de A)
MOV AL, MASK A ; AL = 01100000b (máscara de A)
MOV AL, WIDTH A ; AL = 2 (anchura de A)

También podría gustarte