Entradas

Registros de Emu8086

 2.1. Registros de datos  Los registros de datos son de 16 bits, aunque están divididos. lo que permite su acceso en 8 bits. Estos registros son de propósito general aunque todos tiene alguna función por defecto. AX (acumulador) se usa para almacenar el resultado de las operaciones, es al único registro con el que se puede hacer divisiones y multiplicaciones. Puede ser accedido en 8 bits como AH para la parte alta (HIGH) y AL (LOW) para la parte baja.  BX (registro base) almacena la dirección base para los accesos a memoria. También puede accederse como BH y BL, parte alta y baja respectivamente.  CX (contador) actúa como contador en los bucles de repetición. CL (parte baja del registro) almacena el desplazamiento en las operaciones de desplazamiento y rotación de múltiples bits.  DX (datos) es usado para almacenar los datos de las operaciones.  2.2. Registros de segmento  Los registros de segmento son de 16 bits (como ya se dicho antes) y contienen el valor de segmento. CS (segmento d

Ensamblador

.STACK n sirve para fijar un tamaño n del segmento de pila, por defecto 1K.  .DATA abre el segmento de datos.  .CODE abre el segmento de código, al final código debe aparecer END. .TEXT text le dice al ensamblador que la información que sigue es el texto del programa (instrucciones de montaje), y el código de máquina traducido debe escribirse en el segmento de texto de la memoria. DB, DW y DD se usan para asignar espacio a las variables en memoria. DB tamaño byte, DW tamaño WORD y DD tamaño DWORD. MOV  realiza la transferencia de datos del operando de origen al destino. Como ya hemos visto en  la parte de los modos de direccionamiento, MOV admite todos los tipos de direccionamiento.  Ambos operandos deben ser del mismo tamaño y no pueden estar ambos en memoria. mov rax, 1: Mueve el valor 1 al registro rax, que es utilizado para especificar el número de la llamada al sistema en Linux. mov rdi, 1: Mueve el valor 1 al registro rdi, que es utilizado como el primer argumento de la llamada a

Generación de código objeto

Imagen
 4.1 Registro Los registros son la memoria principal de la computadora. Existen diversos registros de propósito general y otros de uso exclusivo.  Algunos registros de propósito general son utilizados para cierto tipo de funciones. Existen registros acumuladores, puntero de instrucción, de pila, etc.  Distribución La distribución es el proceso en el que el programa generado puede ejecutarse en otras máquinas.  Con respecto al ensamblador, la mayoría del direccionamiento se hace relativo para que el programa sea relocalizable por un programa llamado cargador. En el caso de programas compilados se necesitan de las librerías, si son estáticas se incluyen en el ejecutable por lo que el programa se hace gráfico, si son dinámicas no pero el programa es más pequeño. Debido a la complejidad del software actual se necesitan de asistentes para poder instalar y ejecutar un programa. Operar sobre registros es más rápido y eficiente que operar sobre memoria. Por ello, la adjudicación eficiente de r

comparacion

Imagen
 

III: Optimización

Las optimizaciones pueden realizarse de diferentes formas. Las optimizaciones se realizan en base al alcance ofrecido por el compilador. La optimización va a depender del lenguaje de programación y es directamente proporcional al tiempo de compilación; es decir, entre más optimización mayortiempo de compilación. La optimización es un proceso que tiene a minimizar o maximizar alguna variable de rendimiento, generalmente tiempo, espacio, procesador, etc. 3.1 Tipos de optimización Dentro de los tipos de optimización se derivan los tipos de optimización local, optimización de ciclo, optimización global y optimización de mirilla. 3.1.1 Locales La optimización local se realiza sobre módulos del programa. En la mayoría de las ocasiones a través de funciones, métodos, procedimientos, clases, etc. La característica de las optimizaciones locales es que solo se ven reflejados en dichas secciones. La optimización local sirve cuando un bloque de programa o sección es crítico por ejemplo: E/S, la co

2.3.5 Estructuras

  Las funciones pueden reducir a en línea, lo que se hace que expandir el código original de la función. Las funciones se descomponen simplificando los parámetros de manera individual al igual que el valor de retorno. Entendemos que es el uso de la lengua que hace un hablante. En simples palabras, las funciones del lenguaje son los diferentes objetivos, propósitos y servicio que se le da al lenguaje al comunicarse, dándose una función del lenguaje por cada factor que tiene éste, en donde la función que prevalece es el factor en donde más se pone énfasis al comunicarse. Diversos lingüistas (Karl Bühler, Roman Jakobson, Michael Halliday ) han propuesto distintas clasificaciones de las funciones del lenguaje: Bühler propuso que existían únicamente tres funciones: La Representativa (por la cual se trasmiten informaciones objetivamente) La Expresiva o emotiva (que expresa sentimientos del emisor) La Conativa, mediante la que se influye en el receptor del mensaje a través de órdenes, mandato