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 a...

Lenguaje ensamblador

section .data: Esta línea indica el comienzo de la sección de datos del programa, donde se definen las variables y constantes utilizadas. msg db "Hello world!", 0ah : Aquí se define la variable msg como una cadena de caracteres que contiene el mensaje "Hello world!". El 0ah al final indica un salto de línea. section .text: Esta línea indica el comienzo de la sección de código del programa, donde se encuentra la lógica y las instrucciones de ejecución. global _start: Esta línea declara que el símbolo _start es global, lo cual significa que será el punto de entrada principal del programa. _start: : Etiqueta que marca el inicio del código principal del programa. 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 al sistema en Linux (en este caso, indica la salida estándar). mov ...

Generación de código objeto

Imagen
  4.1 Registros ¿ Qué son? 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. Los registros son espacios físicos dentro del microprocesador con capacidad de 4 bits hasta 64 bits dependiendo del microprocesador que se emplee. ¿Quiénes lo utilizan? Antes de nada, para el desarrollo de esta parte hablaremos indistintamente de registros de activación o de marcos de pila. Esto se debe a que en la documentación encontrada sobre el manejo de los registros ebp y esp se hace mención a dicho concepto de marco de   pila.   Puesto   que   el   lenguaje   permite   recursividad, los   registros   de   activación...

Comparacion de optimizacion

Imagen
 1 2

Optimizacion

 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 mayor tiempo 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 ...

2.3.6 Estructuras

Imagen
  Estructura y fases de un compilador (2) Análisis lineal También conocido como: análisis léxico o exploración. Ejemplo, en la proposición de asignación: posicion = inicial + velocidad * 60 Se identifican los siguientes componentes léxicos Identificador (posicion) Símbolo de asignación (=) Identificador (inicial) Signo de suma (+) Identificador (velocidad) Signo de multiplicación (*) Número (60)   12. Estructura y fases de un compilador (3) Análisis jerárquico También llamado análisis sintáctico. Implica agrupar los componentes léxicos en frases gramaticales que el compilador utiliza para sintetizar la salida. Por lo general, las frases gramaticales se representan mediante un árbol de análisis sintáctico. Ejemplo: Proposición de asignación Identificador posición = expresión expresión identificador + expresión inicial expresión identificador * expresión velocidad Número 60 13. Estructura y fases de un compilador (4) La estructura jerárquica de un programa normalmente se e...