Professional Documents
Culture Documents
Gran elenco,
Patricia Borensztejn
Alejandro Furfaro
Javier Pimas
David Gonzalez M.
Javier Caccavelli
Pablo Somodi
Lautaro Petaccio
Dana Tilve Neyra
Gonzalo Fernndez
Gonzalo Ciruelos
Gorra
Organizacin
Clases
Prcticas
Tericas
Jueves de 17 a 19 hs
Labo 5 / Magna Pab 1
Martes de 17 a 22 hs
Laboratorio 5
Jueves de 19 a 22 hs
Laboratorio 5
Evaluacin
Trabajos Prcticos
TP1: Indiv. - 16/8 - 6/9
TP2: Grupal - 6/9 - 1/11
TP3: Grupal - 4/10 -6/12
Parciales
1er Parcial: 29/9
2do Parcial: 17/11
1er Recuperatorio: 29/11
2do Recuperatorio: 6/12
Rgimen de Aprobacin
Parciales
Calicaciones: I (0 a 59), A- (60 a 64) y A (65 a 100).
No pueden aprobar con A- ambos parciales.
Los recuperatorios tienen 2 notas: I (0 a 64) y A (65 a 100).
Trabajos Prcticos
Calicaciones: I, A. TP1 individual (sin informe)
TP2 y TP3 (con informe) grupos de 3 personas
Materia
Aprobar parciales
Aprobar TPs
Aprobar Final
Regmenes especiales
Trabajo Prctico Final
Eximido de rendir nal
Ms de 70 en ambos parciales (no recuperatorios)
Aprobar los trabajos prcticos en primera instancia
Medios de Comunicacin
Pgina de la materia
http://orga2.exp.dc.uba.ar
Lista de docentes
orga2-doc@dc.uba.ar
Consultas, sugerencias, quejas, agradecimientos, insultos, etc
Lista de alumnos
orga2-alu@dc.uba.ar
Uso casi exclusivo para envo de mensajes a los alumnos
Vale el "busco grupo" o "el sabado por la noche sale tp"
No ocial
#Orga2 @ freenode.net (IRC)
@__orga2__ (twitter)
Bienvenidos a Orga II
Contenidos/Programa
1. Introduccin
Concepto de Computador de Propsito General, y necesidad de un S.O..
Arquitectura para programacin de aplicaciones (Modo Usuario).
Arquitectura para programacin de sistemas operativos (Modo Kernel).
2. Arquitectura Intel 64
Modos de trabajo (Modo Real, Protegido, Virtual 86, y Ext. de 64 bits).
Arquitectura para programacin de aplicaciones.
Modelos de memoria, modos de direccionamiento y punteros con y sin
especicacin de segmento.
Segmentacin.
Set de Instrucciones.
Modos de Direccionamiento.
Ejemplos de uso con algoritmos simples.
3. Ensamblado, vinculacin, carga y ejecucin
Formato de archivos (.o, .exe, .lib, ELF, etc).
Estructura del .asm.
Informacin de debugging.
5. Instrucciones Multimedia
Modelo de procesamiento SIMD.
Implementaciones SIMD en procesadores IA-32.
MMX.
SSE, SSE2, SSE3, SSE4.
Aplicaciones en procesamiento de seales e imgenes.
Concepto de Multitasking.
Contexto de ejecucin.
Conmutacin de tareas en procesadores IA-32.
Estructuras y descriptores asociados en procesadores IA-32.
Relacin de estos recursos con el Sistema Operativo.
Scheduling de tareas. Diferentes alternativas.
6. Microarquitectura
11. Optimizacin
Bibliografa
Arquitectura
Manuales de Intel
(se los pueden bajar de la pgina de la materia)
The Unabridged Pentium 4: IA32 Processor Genealogy
MindShare, Tom Shamley, INC. Addison-Wesley
Computer Architecture: A Quantitative Approach, 4th Edition
John L. Hennessy , David A. Patterson
Preguntas?
Prctica 0
Ejercicio 1
Describa en sus palabras las funciones de las siguientes aplicaciones:
- Ensamblador
- Linker
Ensamblador: Programa que toma cdigo en lenguaje ensamblador y lo
transforma a cdigo de mquina, generando un archivo objeto.
Para esto traduce los mnemnicos y resuelve los nombres simblicos.
Prctica 0
Ejercicio 2
Muestre cmo se almacenan en memoria los siguientes datos en
procesadores Big-Endian y Little-Endian:
DB 12h
DB 12h,34h
DW 1234h
DW 1234h, 5678h
DD 12345678h
DD 12345678h, 9ABCDEF1h
DQ 123456789ABCDEF1h
DB 1234
DB, DW, DD, DQ: Pseudo-instrucciones para el ensamblador que indica cmo denir
datos en el archivo objeto. NO se ejecutan por la CPU, las interpreta el ensamblador.
Ej. para almacenar 0x0048E5FA en memoria
0
1
2
3
0
1
2
3
0xFA 0xE5 0x48 0x00
big endian
little endian
Prctica 0
Ejercicio 3
Cul es el rango de representacin de los nmeros enteros sin signo
con 8, 16 y 32 bits de precisin?
Cul es el rango de representacin de los nmeros enteros en
complemento a dos con 8, 16 y 32 bits de precisin?
Sin signo
Con signo
8
16
32
0 a 2n 1
2n-1 a 2n-11
Sin signo
Con signo
0 a 255
0 a 65535
0 a 4294967295
-128 a 127
-32768 a 32767
-2147483648 a 2147483647
Prctica 0
Ejercicio 6
Exprese los nmeros 133 y 123 en notacin binaria con 8 bits de precisin
(notacin sin signo), y realice la suma de estos dos nmeros bit a bit.
Luego, exprese los nmeros -123 y 123 en notacin complemento a dos
con 8 bits de precisin y realice la suma de estos dos nmeros bit a bit.
Qu conclusin puede sacar al observar el resultados de ambas operaciones?
Prctica 0
Ejercicio 7-8
Explique qu indican y cundo se setean los ags de paridad (PF), de cero
(ZF) y de signo (SF).
Explique las diferencias entre el ag de carry (CF) y el ag de overow (OF).
Importante:
hay operaciones que setean determinados ags, algunas no setean ningn
ag. La interpretacin correcta de los ags depende del programador.
CF = 1 Si hay carry en el bit ms signicativo en la suma,
Si hay borrow en el bit ms signicativo en la resta
CF = 0 cualquier otro caso
SF = 1 Si el bit ms signicativo es 1
SF = 0 cualquer otro caso
ZF = 1 Si el resultado es cero
ZF = 0 cualquier otro caso
Prctica 0
Ejercicio 9
Indique cules son las condiciones para que se activen las siguientes
instrucciones de salto:
JA, JAE, JE, JZ, JGE, JG, JO, JECXZ.
JA
JAE
JE
JZ
JGE
JG
JO
JECXZ
=
=
=
=
=
=
=
=
Instrucciones y Registros
Operaciones
ADD, SUB, MOV, SHL, JMP ... (ver manual)
Hola Mundo
Cmo?
Etiquetas y smbolos
global: Dene un smbolo que va a ser visto externamente
_start: Punto de entrada de un programa en linux
Pseudoinstrucciones
Son instrucciones para el ensamblador
Van en el campo de la instruccin
- DB, DW, DD, DQ, DT, RESB, RESW, RESD, RESQ y REST
- expresin $, evala la posicin en memoria al principio de la
lnea que contiene la expresin
- comando EQU, para denir constantes que despus no quedan
en el archivo objeto
- comando INCBIN, incluye un binario en un archivo assembler
- prefijo TIMES, para repetir una cantidad de veces la instruccin
que sigue
Ensamblando y linkeando
Ensamblamos:
nasm -ggdb -f elf64 holamundo.asm
Linkeamos:
ld -o holamundo holamundo.o
Ejecutamos:
./holamundo
GDB + DDD
Comandos Basicos
GDB
conguracin
Ejecutar en el gdb:
<gdb> b _start
...
<gdb> r
...
Ejecutar en el gdb:
<gdb> si
<gdb> si
<gdb> si
...
Ejecutar en el gdb:
<gdb> info registers
...
Ejecutar en el gdb:
<gdb> x/10c 0x6000d8
...
<gdb> c
...
GDB
trucos tiles
me quiero ir!
Ejercicio
Escriba un programa en lenguaje ensamblador que
imprima por pantalla
en 10 me
en 10 me
en 10 me
...
en 10 me
CHAU!!!
voy ... 9
voy ... 8
voy ... 7
voy ... 0
(OJO! haciendo un ciclo...)
Solucin...
(incompleta)
section .data
msg: DB 'en 10 me voy ... 9',10
largo EQU $ - msg
global _start
section .text
_start:
mov esi, 10
ciclo:
mov rax, 4
; funcion 4
mov rbx, 1
; stdout
mov rcx, msg
; mensaje
mov rdx, largo ; longitud
int 0x80
dec byte [msg+largo-2]
dec esi
cmp esi, 0
jnz ciclo
mov rax, 1
mov rbx, 0
int 0x80
Preguntas?
Gracias!