Intel Arquitectura. Programación en Ensamblador Ing. Marcelo Tosini

Documentos relacionados
Aprendiendo Sistemas Operativos: Programación de Procesadores de Arquitectura IA-32

Taller de Sistemas Operativos. Direccionamiento de Memoria 2012

Microprocesadores. Procesador IA-32 e Intel R 64 Protección. Alejandro Furfaro

6-REGISTROS DEL 8086 Y DEL 80286

Arquitectura de Computadores II Clase 15

Objetivo. Introducción. Tema: GENERACION DE CODIGO. Compiladores, Guía 11 1

Introducción a la Computación. Capítulo 10 Repertorio de instrucciones: Características y Funciones

Procesamiento con Multitarea

Conmutación de Tareas

Arquitectura intel Preámbulo de OSO para alumnos formados en el procesador MIPS. Asignatura Sistemas Operativos Murcia abril de 2005

Intel Arquitectura. Programación en Ensamblador Ing. Marcelo Tosini

Conceptos de Arquitectura de Computadoras Curso 2015

Microprocesadores. Procesador IA-32 - Gestión de Memoria en 64 bits. Alejandro Furfaro

Microprocesadores. Procesadores IA-32 e Intel R 64 Tareas. Alejandro Furfaro

1.2.- EL MICROPROCESADOR.

La arquitectura del 8086/8088

Tema 5.1: Presentación de datos en pantalla

El nivel ISA (II)! Conjunto de Instrucciones

Entorno de Ejecución del Procesador Intel Pentium

Instituto Tecnológico de Costa Rica

Fig. 1: Tipos de datos que puede manejar el procesador

ESTRUCTURA DE MICROPROCESADORES

ARQUITECTURA DEL MICROPROCESADOR 8086

Tema 5. Presentación de datos por pantalla

ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA

Arquitectura de Computadores II 8086 Parte II

Ensamblador. Interrupciones. Dentro de una computadora existen dos clases de interrupciones:

INTRODUCCIÓN. Interrupciones.

Apellidos Nombre DNI

Fundamentos de Arquitectura y Código Máquina

Manual de Programación X86 sobre plataforma FPGA.

EL EMU8086 Y EL MICROPROCESADOR 8086.

Microprocesadores. Procesador IA-32 - Gestión de Memoria. Alejandro Furfaro

Todos los comandos de DEBUG se invocan usando una sola letra y son los siguientes:

101 Sombras del Malware. Israel Aráoz Severiche C EH,C HFI,

Mod. I, Unid. 1, Obj. 1 CRITERIO DE DOMINIO 1/1

MANEJO DEL MOUSE EN LENGUAJE C++

Espacio de direcciones de un proceso

Programación Avanzada en Lenguaje Ensamblador

Historia de los Microprocesadores Intel

PRACTICA #1. Aprender a programar una interrupción software empleando C y/o Ensamblador.

Tema 2. Presentación de datos por pantalla. La ROM-BIOS

ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA

Examen de Arquitectura de Computadores 2 22 de febrero del 2011

Requerimientos Principales de un Sistema Operativo. Descripción y Control de Procesos. Proceso

MÓDULO III PROGRAMACIÓN DEL MICROPROCESADOR

Apuntes de Máquinas Electrónicas. (2º parcial) , José María Foces Morán.

LENGUAJE ENSAMBLADOR PRÁCTICA 11 PRÁCTICA 11 CUATRO OPERACIONES FUNDAMENTALES EN NÚMEROS DE 8 BYTES

Arquitectura de Computadores II Clase #3

1.1.- SISTEMA NUMERICO BINARIO, OCTAL Y HEXADECIMAL 1

Estructura de Microprocesadores. Profesor Ing. Johan Carvajal Godínez

klib librería del núcleo

Departamento de Sistemas e Informática

Resumen de las instrucciones del 8086/8088

Práctica 3: El teclado del PC

Objetivos. Objetivos. Arquitectura de Computadores. R.Mitnik

Tema 2: Arquitectura del repertorio de instrucciones. Visión del computador que tiene el programador en bajo nivel.

Ingeniería en Sistemas. Sistemas Operativos. Trabajo Práctico: Repaso de Interrupciones, direccionamiento de memoria y registros del procesador.

SISTEMAS OPERATIVOS Arquitectura de computadores

Escuela de Ingeniería Electrónica. Memoria. Memoria para el EL Estructura de Microprocesadores. Ing. José Alberto Díaz García.

Sistemas Operativos. Curso 2014 Estructura de los sistemas operativos

Sistema electrónico digital (binario) que procesa datos siguiendo unas instrucciones almacenadas en su memoria

Estructura de Datos. Unidad I Tipos de Datos

movl $var, %eax movl $0xf02, %ebx movb var, %ah movw %bx, %ax mov ebx, eax movl %ebx, %eax movl 3(%ebx), %eax

Centro Universitario de Ciencias Exactas e Ingenierías DIVISION DE ELECTRONICA Y COMPUTACION

Tema 3: ASCII y operaciones de desplazamiento y lógicas

Práctica 2. Registros y posiciones de memoria

Alternativas de programación

Trabajo Práctico Nro 3: Assembler

Arquitectura de Computadores

Práctica 4. Organización del Computador 1 12 de septiembre de Algunas consideraciones preliminares:

Contenido. Sistema de archivos. Operaciones sobre archivos. Métodos de acceso a archivos. Directorio. Sistema de archivos por capas.

Requerimientos principales de un sistema operativo

Organización del Computador I 1er. Parcial 17-Mayo Turno:

BENEMÉRITA UNIVERSIDAD AUTÓNOMA DE PUEBLA FACULTAD DE CIENCIAS DE LA COMPUTACIÓN

Organización n del Computador. CPU (ISA) Conjunto de Instrucciones de la Arquitectura

Programación en ensamblador (x86-64)

Análisis general de un Microprocesador

MICROPROCESADORES. ANL C, <orig.bit>: Y lógico entre el bit y el indicador de acarreo.

Tema 7: Memoria Virtual.

Instituto Tecnológico de Morelia

INTERRUPCIONES. Existen 256 interrupciones En el modo real cada una tiene un vector asociado Vectores de 4 bytes: segmento + offset 32 F0 50 8A

Tema 11. Soporte del Sistema Operativo REQUERIMIENTOS DE LOS SISTEMAS OPERATIVOS MULTIPROGRAMACIÓN.

Arquitectura de Computadores. Apellidos, Nombre:

EL PROCESADOR Estructura de un ordenador propuesta por Von Neumann.

Definición de Memoria

Digital II Documentación de las instrucciones INdg2, OUTdg2 y de los dispositivos mapeados en el espacio de E/S

Contenido. Conjunto de Instrucciones. Formato de la Instrucción. Instrucciones de 1 byte. Formato de la Instrucción 28/09/2011

INTERRUPCIONES SOFTWARE y EXCEPCIONES

Instrucciones de Comunicaciones

Procesadores IA-32 e Intel R 64 Gestión de Interrupciones

UNIVERSIDAD NACIONAL DE INGENIERIA. Programación en Lenguaje Ensamblador

Hola a todos los seguidores del curso de ensamblador de AESOFT.

Pregunta correcta= 0,3 Pregunta no contestada= 0 Pregunta incorrecta (tipo test)= -0,15

Introducción a la arquitectura de computadores

Introducción a los Sistemas Operativos

Arquitectura de Computadores II Introducción al 8086

CPU MEMORIAS CACHE. Memorias caché. Memoria caché = memoria de tamaño pequeño y acceso rápido situada entre la CPU y la memoria principal.

Estructura del Computador

Transcripción:

Intel 80386 Arquitectura

Características generales Procesador de 32 bits Bus de direcciones de 32 bits : 4 Gbyte Bus de datos interno de 32 bits primer procesador de 32 bits de Intel 138 instrucciones (49 más que el 8086) coprocesador 80387 externo

Tipos de datos ASCII BCD Entero sin signo 8 bits 0..255 16 bits 0..65535 32 bits 0..4194304 Entero con signo 8 bits -128..127 16 bits -32768..32767 32 bits -2097152.. 2097151 Cadenas secuencia de bytes o palabras Punto flotante entero de palabra (16) entero corto (32) entero largo (64) BCD empaqutado (80) real corto (32) real largo (64) real temporal (80)

Modos de funcionamiento Modo real igual que el 8086 pero con más instrucciones Modo protegido se habilitan los registros extendidos se habilita el modo de direccionamiento extendido se habilita el sistema de segmentación y paginación Funcionamiento multitarea Modo virtual 8086 emula el modo real dentro del modo protegido acepta todas las instrucciones (excepto las protegidas) acepta juego de registros extendido acepta modos de direccionamiento extendido

Manejo de memoria Segmento : desplazamiento Dirección virtual Si paginación activada Mecanismo de paginación opcional Memoria Mecanismo de segmentación Dirección lineal RAM Si paginación no activada Dirección física

Mecanismo de segmentación Selector de segmento índice Ti rpl desplazamiento LDT o GDT Base (32 bits) attributos Límite (20 bits) 8 bytes If desplazamiento < límite then dirección lineal = base + desplazamiento

Formatos de los descriptores de segmento Base 31..24 Atributos Base del segmento 23..0 Límite del segmento 15..0 G D 0 A V L Límite 19..16 G DPL D T 1 Tipo G: granularidad P: presencia D: código 286/386 DPL: nivel de privilegio del descriptor AVL: disponible para el software DT: segmentos de memoria o del sistema tipo: tipo del descriptor de memoria

Formatos de los descriptores de segmento Campo de tipo: 0 Solo lectura 1 Solo lectura, accedido 2 Lectura/escritura 3 Lectura/escritura, accedido 4 Solo lectura, límite expandible hacia abajo 5 Solo lectura, límite expandible hacia abajo, accedido 6 Lectura/escritura, límite expandible hacia abajo 7 Lectura/escritura, límite expandible hacia abajo, accedido 8 Solo ejecución 9 Solo ejecución, accedido A Ejecución/lectura B Ejecución/lectura, accedido C Solo ejecución, de conformidad D Solo ejecución, de conformidad, accedido E Ejecución/lectura, de conformidad F Ejecución/lectura, de conformidad, accedido

Mecanismo de paginación Blq 0 Blq 1 Blq 2 Blq 3 Blq 4 Blq 5 Espacio lineal Paginación tabla de traslación Blq 3 Blq 4 Blq 1 Blq 0 Blq 2 Blq 5 Espacio físico

Mecanismo de paginación Dirección lineal Dirección física 31 22 21 12 11 0 31 12 11 0 dir página desplazamiento Marco de la página desplazamiento Entrada del directorio Entrada de la tabla de página CR3 Directorio de páginas tabla de páginas

Formato de los descriptores de página 31 12 11 9 8 7 6 5 4 3 2 1 0 Dirección de página AVL 0 0 D A 0 0 U/S R/W P P: presente R/W: read/write U/S: usuario o supervisor A: accedido D: sucio (dirty) AVL: disponible para el software

Mecanismos de protección 2 tipos Protección entre tareas: Se asigna a cada tarea un espacio de direcciones virtual diferente Cada tarea tiene una tabla local de descriptores LDT El sistema operativo se mapea en una tabla global GDT Protección dentro de una tarea Cuatro niveles de privilegio de acceso se restringe el acceso a los datos según la sensibilidad del proceso

Mecanismos de protección Protección entre tareas Sistema operativo GDT Kernel Librerías Tarea 1 Tarea 2 LDT Código LDT Código Espacio de datos Espacio de datos

Mecanismos de protección Protección dentro de una tarea Kernel del sistema Sistema operativo Aplicaciones Cod SO Cod N Data N Data SO Nivel 0 Nivel 1 Nivel 2 Nivel 3 Cod AP Data AP

Mecanismos de protección Protección dentro de una tarea Nivel 0 CPL = 3 Cod SO Cod N Data N Nivel 1 Data SO Nivel 2 X Nivel 3 Cod AP Data AP

Mecanismos de protección Protección dentro de una tarea CPL = 1 Cod SO Cod N Data N X Data SO Nivel 0 Nivel 1 Nivel 2 Nivel 3 Cod AP Data AP

Mecanismos de protección Protección dentro de una tarea Nivel 0 CPL = 0 Cod SO Cod N Data N Nivel 1 Data SO Nivel 2 Nivel 3 Cod AP Data AP

Selección de niveles de privilegio 3 indicadores: CPL : Current privilege level Esta en el campo RPL del selector de segmento CS RPL : Request privilege level Esta en todos los selectores de segmento DPL : Data privilege level En el campo de atributos de cada descriptor de segmento

Selección de niveles de privilegio En todo acceso a un segmento se verifica: si CPL < DPL => acceso permitido sino error (si el privilegio de ejecución actual es mayor que el del segmento accedido) si RPL <> CPL => nuevo CPL = max(cpl, RPL) (si el privilegio de ejecución requerido es menor que el actual entonces el CPL se debilita para adaptarse al nuevo privilegio)

Hagamos un ejemplo Supongamos la instrucción mov ax, [bx] Para este caso BX = 00000567h DS = 0067h índice Ti RPL 0 0 0 0 0 0 0 0 0 1 1 0 0 1 1 1 Con privilegio 3 LDT Entrada 12

Hagamos un ejemplo La entrada 12 de la LDT tiene: Base = 12340000h Límite = 2 Granularidad = 1 (página) DPL = 3 Entonces: 1) si granularidad=1 => límite=8192 bytes 2) comparo BX con el límite: 567 < 8192 3) RPL = DPL => acceso permitido 4) direccción lineal igual a base + offset 12340000h + 00000567h = 12340567h

Hagamos un ejemplo La dirección lineal 12340567h entra al mecanismo de paginación 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 0 0 0 0 1 0 1 0 1 1 0 0 1 1 1 Desplazamiento 567h Entrada 832 del marco de página Entrada 72 del directorio de páginas

Hagamos un ejemplo Entrada 72 del directorio Entrada 832 de la página Desplazamiento 567h 00002 Attr 0B500 Attr 0B500567h Dirección física Directorio de páginas Página 2

Un minuto de descanso para el cerebro

Juego de registros del 386 Los 10 del 8086 pero de 32 bits 4 generales: EAX, EBX, ECX, EDX 2 índices: ESI, EDI 2 punteros: ESP, EBP 1 estado: EFlag 1 contador de programa: EIP Selectores de segmento de 16 bits 6 segmentos: DS, CS, ES, SS, FS, GS 16 nuevos registros 4 registros de control: CR0..CR3 base GDT: GDTR base LDT: LDTR base vector interrupciones: IDTR base desc. tareas: TR 8 de depuración: DR0..DR7 8 registros de sombra

Juego de registros EAX EBX AH AX AL BH BX BL Eflag EIP 32 bits Flag IP ECX CH CX CL EDX DH DX DL CS ESI SI DS EDI DI SS ESP SP ES EBP BP FS 32 bits GS 16 bits

Juego de registros CR0 CR1 CR2 CR3 LDTR IDTR base base 48 bits límite límite DR0 DR1 DR2 DR3 DR4 DR5 DR6 DR7 32 bits TR6 TR7 LDTR selector TR selector 16 bits Prueba de TLB Prueba de TLB 32 bits

Juego de registros Registros de sombra No accesibles al programador Almacenan los descriptores apuntados por los selectores actuales Cuando se carga un selector de segmento el procesador carga su registro de sombra correspondiente con el descriptor al que apunta CS DS SS ES FS GS LDTR TR Base Límite Atributos Base Límite Atributos Base Límite Atributos Base Límite Atributos Base Límite Atributos Base Límite Atributos Base Límite Atributos Base Límite Atributos

Registro de flags 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 V R 0 N IOPL O D I T S Z 0 A 0 P 1 C Reservado por INTEL Modo virtual Bandera RESUME Proceso anidado Privilegio de I/O Sobreflujo Dirección Habilitación de interrupciones Trampa Signo Zero Acarreo auxiliar Paridad Acarreo

Registros de control (CR0..CR3) CR0 : Doble palabra de estado de la máquina 31 16 15 8 7 0 PG 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ET TS EMMPPE MSW (Machine State Word) PE : indicador de modo protegido/real MP : coprocesador presente EM : igual a 1 indica emulación de coprocesador TS : tarea conmutada. Igual a 1 al producirse una conmutación de tarea ET : determina tipo de coprocesador. 0 = 287-1=387. En el 486 no existe PG : habilita el mecanismo de paginación

Registros de control (CR0..CR3) CR1 : No utilizado para 386 y 486 CR2 : dirección lineal del fallo de página Se almacena la dirección lineal que se introdujo en la Unidad de Paginación para traducirla a dirección física y que ocasionó u error o fallo de página CR3 : base del directorio de las tablas de páginas Dirección física en la que comienza el directorio de las tablas de páginas de la tarea en curso Dirección lineal de fallo de página Base del directorio de páginas 000000000000 CR2 CR3

Registros de depuración (DR0..DR7) DR0 DR1 Dirección lineal punto de ruptura 0 Dirección lineal punto de ruptura 1 DR2 Dirección lineal punto de ruptura 2 DR3 Dirección lineal punto de ruptura 3 DR6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 B T B S B D 0 0 0 0 0 0 0 0 0 B 3 B 2 B 1 B 0 DR7 LEN 3 R/W 3 LEN 2 R/W 2 LEN 1 R/W 1 LEN 0 R/W 0 0 0 0 0 0 0 G E L E G 3 L 3 G 2 L 2 G 1 L 1 G 0 L 0 DR4 y DR5 son reservados

Registro DR7 (registro de control) DR7 LEN 3 R/W 3 LEN 2 R/W 2 LEN 1 R/W 1 LEN 0 R/W 0 0 0 0 0 0 0 G E L E G 3 L 3 G 2 L 2 G 1 L 1 G 0 L 0 R/Wn 00 : ruptura en ejecución de una instrucción 01 : ruptura en escritura de datos 10 : no usado 11 : ruptura en escritura o lectura de datos pero no en búsqueda de instr. LENn 00 : longitud de 1 byte 01 : longitud de 2 bytes 10 : no usado 11 : longitud de 4 bytes

Modos de direccionamiento En general: BASE + INDICE * escala + DESP Ninguno Ninguno EAX EAX ECX ECX 1 EDX EDX 2 Ninguno EBX + EBX * 4 + 8 bits ESP 1 2 8 32 bits EBP 1 EBP ESI ESI EDI EDI 1 SS es el segmento por defecto para ESP o EBP 2 ESP no puede usarse cono registro índice

Grupos de instrucciones 25 de transferencia de datos (14) 23 aritméticas (20) 18 de manipulación de bits (10) 49 instrucciones más que el 8086!!! 7 de cadenas (5) 37 de transferencia de programa (29) 28 de control del procesador (11)

Transferencia de datos LFS LGS LSS POPA POPAD POPD POPFD PUSHA PUSHAD PUSHD PUSHFD carga FS y registro de 16 bits con los datos de memoria de 32 bits carga GS y registro de 16 bits con los datos de memoria de 32 bits carga SS y registro de 16 bits con los datos de memoria de 32 bits recupera todos los registros de la pila recupera todos los registros de doble pila recupera una palabra doble de la pila recupera los indicadores ampliados de la pila salva todos los registros en la pila salva todos los registros de dobles palabras en la pila salva doble palabra en la pila salva banderas ampliadas en la pila

Instrucciones aritméticas CDQ MOVSX MOVZX convierte doble palabra a cuadruple palabra cargar, ampliar y poner signo a los datos cargar y ampliar datos con ceros

Manipulación de bits BSF BSR BT BTC BTR BTS SHLD SHRD rastrear bits hacia el frente rastrear bits hacia atras instrucción para prueba de bit probar bit y complementarlo probar bit y resetearlo probar bit y setearlo corrimiento a la izquierda en precisión doble corrimiento a la derecha en precisión doble

Cadenas INS OUTS meter datos de I/O a la memoria sacar datos de la memoria al espacio de I/O

Transferencia de programa BOUND ENTER IRETD LEAVE LOOPD LOOPED LOOPNED JECZX comprobación de límite entrar al procedimiento retornar de una interrupción abandonar el procedimiento repite el ciclo ECX veces repite el ciclo mientras sea igual (ECX = contador) repite el ciclo mientras no sea igual (ECX = contador) salto si ECX es cero

Control del procesador ARPL CTS ESC LAR LGDT LIDT LLDT LSL LTR SGDT SIDT SLDT STR VERR VERW ajusta el grado solicitado de privilegio borra bandera de conmutación de tarea instrucción para el coprocesador carga derechos de acceso carga de tabla de descriptores globales carga de tabla descriptores de interrupción carga de tabla de descriptores locales carga límite de segmento carga registro de tarea almacena tabla de registros de descriptores globales almacena tabla de registros de descriptores de interrupción almacena tabla de registros de descriptores locales almacena registro de tarea verificar acceso para lectura verificar acceso para escritura