Entradas

Tipos de registros

TIPOS DE REGISTROS Los registros del procesador se emplean para controlar instrucciones en ejecución, manejar direccionamiento de memoria y proporcionar capacidad aritmética. Los registros son direccionables por medio de un nombre. Los bits por convención, se numeran de derecha a izquierda, como en: … 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 Los registros internos del procesador se puede clasificar en 6 tipos diferentes Registros de segmento Registros de propósito general Registros de apuntadores Registros de banderas Registros de Puntero de instrucción Registros de Pila Registros de segmento Un registro de segmento tiene 16 bits de longitud y facilita un área de memoria para direccionamiento conocida como el segmento actual. Registro CS. El DOS almacena la dirección inicial del segmento de código de un programa en el registro CS. Esta dirección de segmento, mas un valor de desplazamiento en el registro apuntador de instrucción (IP), indica la dirección de una instrucción que...

Generador de código objeto

La fase final de un compilador es la generación de código objeto, que por lo general consiste en código de máquina relocalizable o código ensamblador. Las posiciones de memoria se seleccionan para cada una de las variables usadas por el programa. Después, cada una de las instrucciones intermedias se traduce a una secuencia de instrucciones de máquina que ejecuta la misma tarea. Un aspecto decisivo es la asignación de variables a registros. El generador de código objeto puede considerarse como la penúltima fase de un compilador, la cual se encarga de tomar como entrada el código intermedio generado por el front-end, y producir código objeto de la arquitectura target para luego entrar en la fase de optimización de código. Toma como  entrada de  representación intermedia  el programa  fuente y produce  como salida  un programa objeto equivalente. Aspectos generales Administración de memoria: la correspondencia entre los nombres del programa fuente con...

Glosario Técnico lenguaje ensamblador

Conceptos básicos. Lenguaje de alto nivel: es aquel que se aproxima más al lenguaje natural humano que al lenguaje binario de las computadoras. Su función principal radica en que a partir de su desarrollo, existe la posibilidad de que se pueda utilizar el mismo programa en distintas máquinas, es decir que es independiente de un hardware determinado. La única condición es que la PC tenga un programa conocido como traductor o compilador, que lo traduce al lenguaje específico de cada máquina. Entre estos lenguajes figuran ejemplos como PASCAL, BASIC, FORTRAN y C++. (Lanzillotta, 2004). Lenguaje de bajo nivel:  también llamado lenguaje ensamblador, permite al programador escribir instrucciones de un programa usando abreviaturas del inglés, también llamadas palabras nemotécnicas, tales como: ADD, DIV, SUB, etc. Un programa escrito en un lenguaje ensamblador tiene el inconveniente de que no es comprensible para la computadora, ya que, no está compuesto por ceros y unos. Para ...

Hola Mundo en lenguaje Ensamblador

Imagen

Lenguaje Ensamblador "NASM"

Imagen
Todo equipo de cómputo tiene un procesador que es el encargado de realizar las operaciones y los cálculos necesarios para resolver las tareas que le son asignadas. Estos procesadores solamente comprenden el lenguaje máquina o lenguaje binario (1 y 0), para una persona aprender a escribir lenguaje máquina puede ser muy complicado, es por ello que existe el lenguaje ensamblador que consta de una serie de directivas e instrucciones  mnemónicas  (fácilmente comprensible para el ser humano) que posteriormente son traducidas a código binario. En ensamblador se debe de ser muy preciso con las instrucciones de lo que queremos hacer, a diferencia de otros lenguajes más sofisticados que permiten tomarnos algunas libertades, esa es una de las características que lo hacen ser un lenguaje de bajo nivel. ¿Por qué aprender ensamblador? Son muchas las razones que un programador debe considerar para aprender ensamblador, cabe resaltar: Permite comprender cómo trabaja el procesador de nue...

Notaciones

POSTFIJA La notación postfija pone el operador al final de los dos operandos, por lo que la expresión queda: ab+5-  La notación posftfija utiliza una estructura del tipo LIFO (Last In First Out) pila, la cual es la más utilizada para la implementación. PREFIJA  La notación prefija pone el operador primero que los dos operandos, por lo que la expresión anterior queda: +ab-5. Esto se representa con una estructura del tipo FIFO (First In First Out) o cola.  Las estructuras FIFO son ampliamente utilizadas pero tienen problemas con el anidamiento aritmético. INFIJA La notación infija es la más utilizada por los humanos por que es la más comprensible ya que ponen el operador entre los dos operandos. Por ejemplo a+b-5. No existe una estructura simple para representar este tipo de notación en la computadora por esta razón se utilizan otras notaciones.

Pila semántica de un analizador sintáctico

Las pilas y colas son estructuras de datos que se utilizan generalmente para simplificar ciertas operaciones de programación. Estas estructuras pueden implementarse mediante arrays o listas enlazadas. Sus características fundamentales es que al extraer se obtiene siempre el último elemento que acabe de insertarse. Por esta razón también se conoce como estructuras de datos LIFO, una posible implementación mediante listas enlazadas seria insertando y extrayendo siempre por el principio de la lista. Las pilas se utilizan en muchas aplicaciones que utilizamos con frecuencia. Las pilas y colas son estructuras de datos que se utilizan generalmente para simplificar ciertas operaciones de programación. Estas estructuras pueden implementarse mediante arrays o listas enlazadas. Un analizador sintáctico es un autómata de pila que reconoce la estructura de una cadena de componentes léxicos. En general, el analizador sintáctico inicializa el compilador y para cada símbolo de entrada llama al analiz...