Anda di halaman 1dari 42

HW

SW

Fundamentos de los Sistemas Telemticos Tema 3: Estructura y funcionamiento de procesadores


Tema 3: Estructura y funcionamiento de procesadores 1

DIT-UPM, 2012. Algunos derechos reservados. Este material se distribuye bajo licencia Creative Commons disponible en: http://creativecommons.org/licenses/by-sa/3.0/deed.es

Tema 3: Estructura y funcionamiento de procesadores

Estructura y funcionamiento de procesadores


Conceptos previos La mquina de von Neumann Evolucin de los procesadores hardware El procesador BRM Procesadores software Lenguajes de marcas y de script Material de estudio y trabajo: Documento Estructura y funcionamiento de procesadores en el Moodle Bibliografa citada en ese documento Ejercicios y prcticas de laboratorio propuestos

Tema 3: Estructura y funcionamiento de procesadores

Estructura y funcionamiento de procesadores


Conceptos previos Procesadores hardware y software Lenguajes Sistemas complejos, abstracciones y modelos La mquina de von Neumann Evolucin de los procesadores hardware El procesador BRM Procesadores software Lenguajes de marcas y de script

Procesadores hardware y software


Procesador hardware
Sistema fsico que ejecuta programas previamente almacenados en una memoria de acceso aleatorio

Procesador sotfware
Programa que, al ejecutarse en otro procesador (hardware o software), transforma unos datos de entrada en unos datos de salida

HW

SW
Tema 3: Estructura y funcionamiento de procesadores 4

Lenguaje de mquina y lenguaje ensamblador


Lenguaje de mquina:
Lenguaje binario que entiende el procesador hardware. Est formado por el repertorio de instrucciones (conjunto de cdigos de operacin y de formatos de las instrucciones) y los convenios de representacin de los datos.

Lenguaje ensamblador (assembly language):


Representacin simblica, inteligible para las personas, del lenguaje de mquina. Ejemplo: Supongamos que 11100000100000001100000000000001 (0xE080C001) es una instruccin de mquina que le dice al procesador: Suma los contenidos de los registros R0 y R1 deja el resultado en el R12. En lenguaje ensamblador podra ser: add r12,r0,r1.

Programa ensamblador (assembler):


Traduce programas escritos en lenguaje ensamblador a lenguaje de mquina. Es un procesador software.
Tema 3: Estructura y funcionamiento de procesadores 5

Tipos de lenguajes y de procesadores


Nivel Tipos de lenguajes De mquina (binario) Procesamiento de los programas Los interpreta un procesador hardware Caractersticas y ejemplos Ligados a la arquitectura de un procesador hardware GAS/ARM, x86, MIPS... MASM/x86 Independientes del procesador hardware Compilados: C, Java... Interpretados: Ruby, Phyton... Tipo especial de interpretados: controlan a otros programas bash, JavaScript... De marcas Se interpretan con un programa intrprete Tipo especial de interpretados: marcas en un documento sobre su estructura o su presentacin HTML, XML...

Bajo

Ensambladores Se traducen con un programa ensamblador Compilados Se traducen con un programa compilador Interpretados Se interpretan con un programa intrprete De script Se interpretan con un programa intrprete

Alto

Tema 3: Estructura y funcionamiento de procesadores

Sistemas complejos y abstracciones


Los procesadores (hw y sw) son sistemas complejos: slo pueden describirse haciendo abstraccin de detalles. abstraccin(sistema) modelo del sistema

Dependiendo de qu es lo que interesa estudiar del sistema hay distintos niveles de abstraccin y distintos tipos de modelos. En este Tema estudiaremos
1

modelos de procesadores hardware en el nivel de mquina convencional y modelos de procesadores software (nivel de mquina simblica).
Tema 3: Estructura y funcionamiento de procesadores 7

Niveles de abstraccin
En procesadores hardware: Nivel de circuito elctrico: transistores, resistencias, voltajes, corrientes... (electrnica analgica). Pero un microprocesador puede contener miles de millones de transistores! Nivel de circuito lgico: puertas lgicas, operaciones (0 OR 1 = 1, etc.) (electrnica digital). Abstraccin de los circuitos internos de las puertas, de los voltajes... Pero un microprocesador puede contener decenas de millones de puertas! Nivel de mquina convencional: Buses, unidades aritmtica, lgica y de desplazamiento, registros, unidad de control, repertorio de instrucciones... Abstraccin de las puertas que componen las unidades. Modelos engorrosos por el lenguaje binario. Niveles superiores (hw+sw): Nivel de mquina operativa: instrucciones de mquina ms llamadas al sistema. Abstraccin de gestin de procesos, de almacenamiento... Nivel de mquina simblica: en lugar de instrucciones de mquina, su expresin en lenguaje ensamblador (o en un lenguaje de alto nivel). Abstraccin de ceros y unos.
Tema 3: Estructura y funcionamiento de procesadores 8

Modelos
R.A.E.: 11 acepciones de modelo: 1. m. Arquetipo o punto de referencia para imitarlo o reproducirlo. ... 4. m. Esquema terico [...] de un sistema o de una realidad compleja [...] que se elabora para facilitar su comprensin y el estudio de su comportamiento. ... 5. m. Objeto, aparato, construccin, etc., o conjunto de ellos realizados con arreglo a un mismo diseo. Auto modelo 1976. Lavadora ltimo modelo. ... Modelo estructural: descripcin del sistema como conjunto de partes (subsistemas) y sus interrelaciones. Modelo funcional: qu hace el sistema (cmo responde a las entradas, cmo se usa). Modelo procesal: cmo lo hace (cmo funciona).

Tema 3: Estructura y funcionamiento de procesadores

Estructura y funcionamiento de procesadores


Conceptos previos La mquina de von Neumann Modelo estructural Modelo funcional Modelo procesal Evolucin de los procesadores hardware El procesador BRM Procesadores software Lenguajes de marcas y de script

La mquina de von Neumann (1945)

UCP
datos UAL datos UE/S

direcciones UC direcciones instrucciones MP

instrucciones, y datos (operandos y resultados) direcciones (de MP y de UE/S) seales de control ("micrordenes")

Tema 3: Estructura y funcionamiento de procesadores

10

La mquina de von Neumann: componentes


Memoria principal (RAM):
direccin (12 bits) micrordenes de la UC esc lec

palabra direccionada (40 bits)

4.096 palabras

palabra palabra obtenida a grabar (caso de lectura) (caso de escritura)

Unidad aritmtica y lgica:


AC (40 bits)
resultado operacin 1 operacin 2 ... operacin n

Unidad de control:
micrordenes direccin de dato (a la UAL, la MP (a la MP y/o las UE/S) o las UE/S) direccin de la instruccin siguiente (a la MP)

UAL

instruccin (de la MP)

UC

operando 1

operando 2
Tema 3: Estructura y funcionamiento de procesadores 11

La mquina de von Neumann: modelo funcional (1)


El contenido de una palabra (40 bits) puede interpretarse
como un nmero entero entre (239 1) y +239 1 (c. a 1), o como nmero fraccionario con coma ja, o como dos instrucciones de 20 bits.

Un programa es una sucesin de instrucciones de mquina. Cada instruccin es un conjunto de bits que especica una accin elemental en un subconjunto de bits llamado cdigo de operacin. Formato de instrucciones:
8 12 8 12

CO

CD

CO

CD

El programa debe estar almacenado en la memoria principal antes de comenzar su ejecucin.


Tema 3: Estructura y funcionamiento de procesadores 12

La mquina de von Neumann: modelo funcional (2)


Hay instrucciones de procesamiento. Por ejemplo: CO = sumar; CD = 7 le dice a la UC: suma al acumulador el contenido de la palabra de direccin 7 y luego sigue con la instruccin almacenada a a continuacin de sta e instrucciones de transferencia de control. Por ejemplo: CO = bifurca si el contenido del acumulador es 0; CD = 700 le dice a la UC: si se cumple esa condicin, la instruccin siguiente a ejecutar es la que est en la direccin 700; si no, es la que est a continuacin de sta.
Tema 3: Estructura y funcionamiento de procesadores 13

La mquina de von Neumann: modelo procesal


En cada paso de la ejecucin, la unidad de control:
1

estado inicial
0 CP

Lee (extrae) de la MP la instruccin cuya direccin de memoria se encuentra en el registro contador de programa. Decodica los bits de la instruccin Ejecuta la instruccin generando las micrordenes oportunas.
ejecucin

lectura de instruccin
(M[(CP)]) (CP)+1 UC CP

decodificacin

(Simplicado: en los modelos de von Neumann haba dos instrucciones en cada palabra)
Tema 3: Estructura y funcionamiento de procesadores 14

Estructura y funcionamiento de procesadores


Conceptos previos La mquina de von Neumann Evolucin de los procesadores hardware Tecnologa y componentes Modelos estructurales Modelos funcionales Modelos procesales El procesador BRM Procesadores software Lenguajes de marcas y de script

Evolucin: tecnologa y componentes

Acorde con lo previsto en la ley de Moore: Procesadores:


Reloj 5 KHz varios GHz Acumulador decenas de registros UCP: 1 procesador n procesadores

Memoria:
20 KiB Caches varios GiB

Perifricos:
Terminales electromecnicos Ratn, LCD, almacenamiento, sensores y actuadores, comunicaciones... Con controladores inteligentes

Tema 3: Estructura y funcionamiento de procesadores

15

Modelos estructurales: interconexin por buses


Bus
Conjunto de conductores elctricos (cables, pistas o conexiones en un circuito integrado) que conectan varias estaciones que pueden ser unidades funcionales en un ordenador o nodos en una red. Un bus es un canal de difusin, lo que signica que cada estacin recibe las transmisiones de todas las dems, y todas ellas tienen igual acceso al bus. (Traducido de http://foldoc.org/bus)

Slo consideraremos buses paralelo, en los que se transmite un ujo de bytes o de n bytes. Tambin hay buses serie, en los que se transmite un ujo de bits serializados (USB), o 2n ujos de bits, si el bus es bidireccional y tiene n enlaces (PCIe).
Tema 3: Estructura y funcionamiento de procesadores 16

Ejemplo de modelo estructural: BRM


Bus A (bus de direcciones, 32 bits)
VAddr[31:0]

RA

incrementador (+4) bus UAL clk reset irq req r/w size

UAL
operando 2 operando 1

R0 R1

UC

UD

R13 = SP R14 = LR R15 = PC CPSR

R13_SVC R14_SVC RIE SPSR RID

wait

bus B RDE RDL RIL

WData[31:0]

RData[31:0]

Bus D (bus de datos e instrucciones, 32 bits)

Luego lo estudiaremos con detalle


Tema 3: Estructura y funcionamiento de procesadores 17

Procesadores hardware en un PC...

C0

C1

C2

C3

MP
1b, 480 Mbps puerto USB puente sur puerto (southbridge, o USB ICH: I/O puerto Controller Hub) USB puerto puerto USB audio puerto PCIe x1 USB 2x500 MB/s switch

L1i,L1d L1i,L1d L1i,L1d L1i,L1d

L2

bus del sistema (FSB: FrontSide Bus) 64b, 8512 MB/s PCIe x16 2x16b, 2x8000 MB/s
HDMI

bus de memoria 64b, 8512 MB/s


puente norte

cmara escner impresora ratn smart card

controlador grafico (GPU)


VGA DVI

(northbridge, o MCH: Memory Controler Hub)


gigabit ethernet

bus PCI 32b, 133MB/s

puente PCI puerto 4b, 384 MB/s SATA puerto SATA puerto SATA

LPC 4b, 16 MB/s

controlador super IO

modem

puertos serial, linea paralelo, PS/2. disquete...

Tema 3: Estructura y funcionamiento de procesadores

18

... en un telfono mvil...

Samsung Galaxy S II:


Fuente: http://forums.guru3d.com/showthread.php?t=349178&page=7
Tema 3: Estructura y funcionamiento de procesadores 19

... en un navegador GPS...

Fuente: http://focus.ti.com/docs/solution/folders/print/413.html
Tema 3: Estructura y funcionamiento de procesadores 20

... en un cajero automtico...

Fuente: http://commons.wikimedia.org/wiki/File:Atm_blockdiagram.png
Tema 3: Estructura y funcionamiento de procesadores 21

Modelos funcionales: CISC vs. RISC


CISC (Complex Intruction Set Computer)
Varios cientos de instrucciones Instrucciones para operaciones complejas Varios formatos de instrucciones (uno o varios bytes)

RISC (Reduced Intruction Set Computer)


(Procesadores diseados a partir de los aos 1980) Slo las instrucciones ms frecuentes Formato de instrucciones regular Arquitectura load/store (instrucciones de procesamiento sobre operandos en registros) Tres tipos de instrucciones:
De movimiento y procesamiento entre registros De transferencias de datos con la memoria y los perifricos De transferencias de control: bifurcaciones, llamadas y retornos de subprogramas, interrupcin de programa
Tema 3: Estructura y funcionamiento de procesadores 22

Direccionamiento de la memoria
Espacio de direccionamiento: si el bus de direcciones tiene n bits, el procesador puede generar 2n direcciones de bytes. Entre la MP y los registros se pueden transferir bytes o palabras de k bytes. Convenios: Sobre el almacenamiento de una palabra en varios bytes: Extremista mayor o menor (estudiado en Tema 2). Sobre el direccionamiento de las palabras: En algunos procesadores (p. ej. ARM) es obligatorio que las direcciones de palabra sean mltplos de k : direcciones de palabra alineadas.
dir. byte 0 1 2 3 4 5 6 7 dir. palabra dir. byte 0 0 1 2 3 4 5 6 7 0 1 2 dir. palabra

(a) palabras alineadas

(b) palabras no alineadas

Tema 3: Estructura y funcionamiento de procesadores

23

Modos de direccionamiento
En las instrucciones que hacen referencia a memoria (las de transferencia de datos y las de transferencia de control) hay varios modos de obtener la direccin efectiva: Direccionamiento directo: El de von Neumman: la direccin est contenida en la misma instruccin. Direccionamiento inmediato: La instruccin contiene el operando. Direccionamiento indirecto: La direccin est en otra palabra de la memoria, o (ms frecuente) en un registro del procesador. Direccionamiento indexado: La direccin efectiva se obtiene sumando a un registro de base, o registro de ndice, un valor inmediato o el contenido de otro registro (veremos algunas variantes en BRM). Direccionamiento relativo al CP: La direccin efectiva se obtiene sumando una distancia (positiva o negativa) (offset) al valor que en ese momento tiene el contador de programa.
Tema 3: Estructura y funcionamiento de procesadores 24

Comunicaciones con perifricos


Puertos de los controladores: registros que contienen datos intercambiados con un registro del procesador, o informaciones sobre el estado (preparado, n de transferencia, error...), o rdenes del procesador (localizacin en disco, iniciar transferencia...) Cada puerto tiene una direccin de entrada salida Dos convenios sobre las direcciones: Espacios de direccionamiento independientes (Intel, AMD...) Espacio de direccionamiento compartido (ARM, Motorola...) Entrada/salida memory-mapped
Tema 3: Estructura y funcionamiento de procesadores 25

Modelos procesales: dos innovaciones importantes


Encadenamiento (pipelining)
Realizacin simultnea de las fases (transparencia 14): mientras se ejecuta una instruccin se est descodicando la siguiente y leyendo la siguiente a sta (cadena de profundidad 3; algunos procesadores tienen cadenas de profundidad superior a 10).

Interrupciones
Mecanismo (combinacin de hardware y de software) para que el procesador pueda abandonar temporalmente la ejecucin de un programa y pasar a ejecutar una rutina de servicio que depende de la causa de la interrupcin: peticin de un perifrico, fallos del hardware... peticin del propio programa (llamadas al sistema operativo)
Tema 3: Estructura y funcionamiento de procesadores 26

Estructura y funcionamiento de procesadores


Conceptos previos La mquina de von Neumann Evolucin de los procesadores hardware El procesador BRM Modelos estructural y procesal Modelo funcional: tipos y formatos de instrucciones Instrucciones de procesamiento y movimiento El lenguaje ensamblador y la aplicacin ARMSim# Instrucciones de transferencia de control Subprogramas Instrucciones de acceso a MP y perifricos La pseudoinstruccin LDR Mdulos Interrupciones Procesadores software

El procesador BRM

BRM (Basic RISC Machine): Versin simplicada (subconjunto) de una arquitectura (familia de procesadores) real: ARM (Advanced RISC Machines): La arquitectura de 32 bits ms extendida Simulador ARMSim#: http://armsim.cs.uvic.ca/

Tema 3: Estructura y funcionamiento de procesadores

27

BRM: modelo estructural


Bus A (bus de direcciones, 32 bits)
VAddr[31:0]

RA

incrementador (+4) bus UAL clk reset irq req r/w size

UAL
operando 2 operando 1

R0 R1

UC

UD

R13 = SP R14 = LR R15 = PC CPSR

R13_SVC R14_SVC RIE SPSR RID

wait

bus B RDE RDL RIL

WData[31:0]

RData[31:0]

Bus D (bus de datos e instrucciones, 32 bits)

Tema 3: Estructura y funcionamiento de procesadores

28

BRM: registros
R0 - R15: propsito general
Pero hay tres con funciones especiales: R13 = SP: puntero de pila (stack pointer) R14 = LR: registro de enlace (link register) R15 = PC: contador de programa (program counter)

CPSR/SPSR: registros de estado


Current Program Status Register: al atender a una interrupcin se copia automticamente en SPSR (Saved PSR)
31 28 27 7 I 0 0 4 Modo 0 N Z C V 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Modo: 10000 = usuario; 10011 = supervisor I: 0 = interrupciones inhibidas; 1 = interrupciones permitidas N, Z, C, V: indicadores de negativo, cero, acarreo y desbordamiento RA, RDE, RDL, RIL, RID y RIE: transparentes en el nivel de mquina convencional
Tema 3: Estructura y funcionamiento de procesadores 29

BRM: modelo procesal


Cadena de profundidad 3 con instrucciones de 4 bytes:
Direcciones de las instrucciones d+4
lectura decodificacin lectura ejecucin decodificacin lectura ejecucin decodificacin lectura

lectura

decodificacin

ejecucin

tiempo

d+8 d+12 d+16

Cuando se est ejecutando la instruccin d el contador de programa contiene d + 8. Si la instruccin en d es una bifurcacin a d 1 hay que vaciar la cadena:
Direcciones de las instrucciones d+4
lec(d+4) dec(d+4)

lec(d)

dec(d)

ejec(d)

bifurca a d1

operaciones intiles d+8 d1 d1+4


lec(d+8) lec(d1) dec(d1) lec(d1+4)

Tema 3: Estructura y funcionamiento de procesadores

30

BRM: formatos de instrucciones


31 Cond 28 27 26 Tipo 0

Cuatro tipos de instrucciones: T 00 01 10 11


Cond

Instrucciones de procesamiento y movimiento de datos transferencias con MP y perifricos bifurcacin interrupcin de programa
0 0 I Cop S Rn Rd

Nmero 16 4 2 1
Op2

Cond

0 1

I P U B W L

Rn

Rd

Dist

Cond

1 0 1 L

Dist

Cond

1 1

1 1

Ignorado por el procesador

Tema 3: Estructura y funcionamiento de procesadores

31

Condiciones de ejecucin
Todas las instrucciones son condicionadas: Cond 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 Hex. 0 1 2 3 4 5 6 7 8 9 A B C D E F Nem. EQ NE CS CC MI PL VS VC HI LS GE LT GT LE [AL] NV Condicin Z=1 Z=0 C=1 C=0 N=1 N=0 V=1 V=0 C=1yZ=0 C=0oZ=1 N=V N V Z=0yN=V Z=1oN V (por defecto) Signicado = sin signo < sin signo Negativo Positivo Desbordamiento No desbordamiento > sin signo sin signo con signo < con signo > con signo con signo Siempre Nunca
32

Tema 3: Estructura y funcionamiento de procesadores

Procesamiento y movimiento: operaciones


31 Cond 28 0 0 25 24 I Cop 21 20 19 S Rn 16 15 Rd 12 11 Op2 0

Cop 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111

Hex. 0 1 2 3 4 5 6 7 8 9 A B C D E F

Nem.

AND EOR SUB RSB ADD ADC SBC RSC TST TEQ CMP CMN ORR MOV BIC MVN

Accin operando1 AND operando2 Rd operando1 OR exclusivo operando2 Rd operando1 operando2 Rd operando2 operando1 Rd operando1 + operando2 Rd operando1 + operando2 + C Rd operando1 operando2 + C 1 Rd operando2 operando1 + C 1 Rd como AND, pero no se escribe en Rd como EOR, pero no se escribe en Rd como SUB, pero no se escribe en Rd como ADD, pero no se escribe en Rd operando1 OR operando2 Rd operando2 (el operando1 se ignora) Rd operando1 AND NOT operando2 Rd NOT operando2 (el operando1 se ignora) Rd

operando1 = (Rn); operando2 depende de I si S = 1 (nemnico: ADDS, etc.) se ponen los indicadores; con TST, TEQ, CMP y CMN, S = 1 siempre
Tema 3: Estructura y funcionamiento de procesadores 33

Procesamiento y movimiento: casos sencillos


31 Cond 28 0 0 25 24 I Cop 21 20 19 S Rn 16 15 Rd 12 11 Op2 0

Operando1: El contenido del registro codicado en Rn (se ignora para MOV y MVN) Operando2: si I=0 (modo registro), el contenido del registro codicado en los 4 bits menos signicativos si I=1 (modo inmediato), el nmero binario en los 8 bits menos signicativos. Resultado en Rd (destino)
Cdigo fuente

Ejemplos:

MOV R6, R0 ADD R0, R0, R1 ADDS R0, R0, R1 MOV R6, #3 MOVEQ R6, #3 SUB R0, R0, #10

Binario (en hex.) 0xE1A06000 0xE0800001 0xE0900001 0xE3A06003 0x03A06003 0xE240000A

Operacin (R0) R6 (R0)+(R1) R0 (R0)+(R1) R0; pone indic. 3 R6 Si Z=1, 3 R6 (R0)-10 R0

Tema 3: Estructura y funcionamiento de procesadores

34

Un programa
Sumar 255 y 1 y dejar el resultado en R0 Pseudocdigo:

255 R1 1 R2 (R1)+(R2) R0
25 24 0 0 I Cop 21 20 19 S Rn 16 15 Rd 12 11 Op2 0

Instrucciones:
31

28

(formato

Cond

)
Hexadec. E3A010FF E3A02001 E0810002
35

Nemnico

Cdigo binario (cdigo objeto) 1110 00 1 1101 0 0000 0001 000011111111 1110 00 1 1101 0 0000 0010 000000000001 1110 00 0 0100 0 0001 0000 000000000010
Tema 3: Estructura y funcionamiento de procesadores

MOV R1,#255 MOV R2,#1 ADD R0,R1,R2

El programa en lenguaje ensamblador


/**************************************************** * * * Primer ejemplo * * * ****************************************************/ .equ cte1,255 @ Directivas .equ cte2,1 @ para el ensamblador mov r1,#cte1 @ Carga valores en R1 mov r2,#cte2 @ y R2 add r0,r1,r2 @ y hace R1 + R2 R0 swi 0x11 @ Instruccin para el procesador @ hardware. 0x11 le indica a @ ARMSim# el fin de la ejecucin .end @ Directiva para el @ ensamblador que indica el @ fin del programa fuente
Tema 3: Estructura y funcionamiento de procesadores 36

La aplicacin ARMSim#
Contiene: Un ensamblador del lenguaje ensamblador GNU Un simulador del procesador hardware ARM7TDMI Otras cosas (montador, simulador de cache...) Para empezar a usarlo:
1 2

4 5 6

Se carga el programa fuente (File Load). Automticamente, ARMSim# ensambla y, si no hay errores, presenta el resultado. El cdigo objeto se carga a partir de la direccin 0x1000 En la vista de memoria (activarla con View Memory) se pueden ver los contenidos Esta vista se puede seleccionar por bytes o por palabras Se simula la ejecucin con el botn Run Tambin se puede simular paso a paso (Debug Step into, o poniendo breakpoints) En todo momento se muestran los contenidos de los registros, en decimal o en hexadecimal
Tema 3: Estructura y funcionamiento de procesadores 37

El programa en ARMSim#
1: File > Load 5: Run 6: paso a paso 2: listados fuente y ensamblado

7: contenidos de los registros

3: contenidos de la memoria

4: presenta bytes o palabras


38

Tema 3: Estructura y funcionamiento de procesadores

Procesamiento y movimiento: casos generales


31 Cond 28 0 0 25 24 I Cop 21 20 19 S Rn 16 15 Rd 12 11 Op2 0

Recordar los casos sencillos: Operando1: El contenido del registro codicado en Rn (se ignora para MOV y MVN). Operando2: si I=0 (modo registro), el contenido del registro codicado en los 4 bits menos signicativos. Sobran 8 bits que se pueden aprovechar para indicar operaciones de desplazamiento o rotaciones previas sobre este registro. si I=1 (modo inmediato), el nmero binario en los 8 bits menos signicativos. [0..255]; si se usaran los 12, [0..4095]; con otro convenio, nmeros mayores.
Tema 3: Estructura y funcionamiento de procesadores 39

Procesamiento y movimiento: modo registro


31 Cond 28 0 0 25 24 I Cop 21 20 19 S Rn 16 15 Rd 12 11 Op2 0

Operando1: Contenido del registro codicado en Rn Operando2 cuando I = 0 (modo registro):


11 7 6 5 4 3 D 0 Rm 0 Rm 0

Si bits 4 a 11 = 0, Op2 = (Rm) Si bit 4 = 0, Op2 = despl(n,D,Rm); n = bits 7 a 11 D = 00: LSL; D = 01: LSR; D = 10: ASR; D = 11: ROR Si bit 4 = 1, Op2 = despl(n,D,Rm); n = (Rs)

despl_inmed

11 Rs

8 7 0

6 5 4 3 D 1

Pero no hay que preocuparse: el ensamblador se encarga de calcular. Ejemplos:


Cdigo fuente

MOVS R3, R3, LSL #4 SUB R0, R1, R2, ASR #6 ADD R0, R0, R1, LSR R2

Hex. 0xE1B03203 0xE0410342 0xE0800231

Operacin (R3)16 R3; pone indicadores (R1)-(R2)64 R0 (R0)+LSR(R1,R2) R0

Tema 3: Estructura y funcionamiento de procesadores

40

Procesamiento y movimiento: modo inmediato


31 Cond 28 0 0 25 24 I Cop 21 20 19 S Rn 16 15 Rd 12 11 Op2 0

Operando1: Contenido del registro codicado en Rn Operando2 cuando I = 1 (modo inmediato):


11 8 rot x2 7 inmed_8 ROR 0

Si Operando2 255, en los bits 0 a 7, con bits 8 a 11 = 0 Si bits 8 a 11 0, indican una rotacin a la derecha de 2(rot) bits Ejemplos:
Cdigo fuente

UD

operando 2 (32 bits)

SUBS R0, R0, #10 MOV R6, #256 MOVEQ R6, #4080 MOV R6, #257

Binario (en hex.) 0xE250000A 0xE3A06C01 0x03A06EFF no se puede!

Operacin (R0)-10 R0; pone pone indicadores 256 R6 Si Z=1, 4080 R6

Tema 3: Estructura y funcionamiento de procesadores

41

Necesidad de bifurcaciones
Frecuentemente, el algoritmo implica tomar un decisin. Ejemplo: clculo iterativo del factorial. Pseudocdigo: 1 fact repetir { factn fact n-1 n } hasta que n = 0 Adaptacin a BRM:

mov r0,#1 @ (R0) = fact mov r1,#n @ (R1) = n, n-1... mul r0,r0,r1 @ BRM no tiene "mul", pero ARM s subs r1,r1,#1 /* Si el resultado es 0, terminar; si no, volver a la instruccin "mul" */
Tema 3: Estructura y funcionamiento de procesadores 42

Transferencias de control
Valor R15 = PC. Ejemplos: MOV R15, #0xFFFFFF (direccionamiento directo) 0xE3E0F4FF MOVEQ PC, R0 (indirecto: si Z=1 bifurca a DE = (R0)) 0x01A0F000 Instrucciones de bifurcacin (B, BL, BEQ...BLHI...):
31 Cond 28 27 26 25 24 23 1 0 1 L Dist 0

DE = dir. instrucc. + 8 + 4Dist ( 32 MiB); DE R15 si L = 1 (instruccin BL), dir. instrucc. + 4 LR = R14 Instruccin de interrupcin de programa (SWI, SWIEQ...):
31 Cond 28 27 26 25 24 23 1 1 1 1 Ignorado por el procesador 0

Tema 3: Estructura y funcionamiento de procesadores

43

Programa para el factorial


0000 E3A00001 0004 E3A0100A 0008 E0000091 000C E2511001 0010 1AFFFFFC 0014 EF000011 .equ n,10 mov r0,#1 @ (R0) mov r1,#n @ (R1) bucle: mul r0,r1,r0 @ BRM subs r1,r1,#1 /* Si el resultado es si no, volver a la bne bucle swi 0x11 = fact = n, n-1... no tiene "mul", pero ARM s 0, terminar; instruccin "mul" */

El ensamblador ha calculado 0xFFC para el campo Dist, que es la representacin en complemento a 2 de -4. Al ejecutarse resultar DE = dir. instrucc. + 8 + 4Dist = 0x0010 + 8 + 4(-4) = 16 + 8 - 16 = 8, que es la direccin de mul (identicada por la etiqueta bucle en el cdigo fuente). Comprobar con ARMSim# que en R0 resulta 10! = 3628800 = 0x375F00 Como el programa se carga a partir de 0x1000, la direccin de mul es 0x1008, y la de bne, 0x1010.
Tema 3: Estructura y funcionamiento de procesadores 44

Subprogramas
Programa al que pueden llamar o invocar otros programas para realizar una funcin con distintos parmetros cada vez.
p d1 d2

Paso de parmetros
Programa llamada 1

Por registros (paso de valor) Por zonas de memoria apuntadas por registros (paso de referencia)

llamada 2

Direccin de retorno
En un registro especial (registro de enlace, LR)
Instruccin de llamada: guarda la direccin de retorno en LR y bifurca (instruccin BL en BRM) Instruccin de retorno: copia el contenido de LR en el contador de programa (MOV PC,LR en BRM)

Subprograma

retorno

En una pila en memoria (necesario para anidamiento)

Tema 3: Estructura y funcionamiento de procesadores

45

Subprograma para el factorial y llamadas


0000 0004 0008 000C 0010 0014 0018 E3A01007 EB000004 E1A02000 E3A0100A EB000001 E1A03000 EF000011

001C E3A00001 0020 0024 0028 002C E0000091 E2511001 1AFFFFFC E1A0F00E

.equ n1,7 .equ n2,10 /* Llamadas al subprograma */ mov r1,#n1 bl fact mov r2,r0 @ (n1)! R2 mov r1,#n2 bl fact mov r3,r0 @ (n2)! R3 swi 0x11 /* Subprograma: (R1)! R0 */ fact: mov r0,#1 bucle: mul r0,r1,r0 subs r1,r1,#1 bne bucle mov pc,lr @ retorno del subprograma

Y si no disponemos de la instruccin mul? Escribimos un subprograma, mult, que haga (R1)(R0) R0 Pero al hacer bl mult se guardara la direccin de retorno a fact en LR, perdindose la de retorno al programa: problema del anidamiento Solucin: guardar previamente (LR) en la memoria (en una pila, ms adelante)
Tema 3: Estructura y funcionamiento de procesadores 46

Transferencias con MP y perifricos


31 Cond 28 0 1 25 24 22 20 19 Rn 16 15 Rd 12 11 Dist 0 I P U B WL

Cuatro instrucciones: L 0 0 1 1 B 0 1 0 1 Nemnico STR STRB LDR LDRB Operacin (Rd) M[DE] (Rd[0..7]) 8 M[DE] (M[DE]) Rd (M[DE]) 8 Rd[0..7]; 0 Rd[8..31]

M[DE] = una palabra o un byte de la memoria, o un puerto (espacios compartidos) DE (direccin efectiva) = f(Rn,I,P,U,Dist) Rn: registro de ndice W: W = 1 para actualizar Rn en los modos preindexados Cuatro modos de direccionamiento determinados por I y P
Tema 3: Estructura y funcionamiento de procesadores 47

Modo postindexado inmediato (I = 0, P = 0)


31 Cond 28 0 1 25 24 22 20 19 Rn 16 15 Rd 12 11 Dist 0 I P U B WL

DE = (Rn) (Rn)(Dist) Rn (independientemente de W) Si U = 1, +; si U = 0, Ejemplos:


Cdigo fuente

LDR R0, [R7], #4 STR R0, [R7], #-4 LDRB R0, [R7], #-8 STRB R0, [R7], #-1 STR LR,[SP],#-4 STRB R0, [R7]

Binario (en hex.) 0xE4970004 0xE4070004 0xE4570008 0xE4470001 0xE40DE004 0xE5C70000

Operacin (M[(R7)]) R0; (R7) + 4 R7 (R0) M[(R7)]; (R7) - 4 R7 (M[(R7)]) 8 R0; (R7) - 8 R7 (R0) 8 M[(R7)]; (R7) - 1 R7 (R14) M[(R13)]; (R13) - 4 R13 (R0) 8 M[(R7)]

Utilidad: Acceso a un byte (o una palabra) cuya direccin est en Rn Cuando Rn es R13 = SP, acceso a la pila
Tema 3: Estructura y funcionamiento de procesadores 48

Subprograma para intercambiar dos bytes


Suponiendo que R0 y R1 contienen ya las direcciones de los bytes, Pseudocdigo: (M[R0]) 8 R2 (M[R1]) 8 R3 (R2) 8 M[R1] (R3) 8 M[R0]

El modo de direccionamiento es indirecto: R0 y R1 son punteros. En BRM se obtiene este efecto con postindexado inmediato y Dist = 0. Cdigo:

0000 0004 0008 000C 0010

E5D02000 E5D13000 E5C12000 E5C03000 E1A0F00E

ldrb r2,[r0] @ Es lo mismo que ldrb r2,[r0],#0 ldrb r3,[r1] strb r2,[r1] strb r3,[r0] mov pc,lr @ Retorno del subprograma
Tema 3: Estructura y funcionamiento de procesadores 49

Intercambio de zonas de bytes


0 d Programa y subrograma

Escribir 50 veces las instrucciones? Mejor hacer un bucle: Las instrucciones de intercambio son solamente cuatro, pero, con ayuda de una instruccin de bifurcacin condicionada, se pueden ejecutar 50 veces Conforme se van ejecutando (a cada paso por el bucle) se van incrementado las direcciones: ldrb r2,[r0],#1, etc. Ser necesario un contador para comprobar el nal del bucle
Tema 3: Estructura y funcionamiento de procesadores 50

(R0) Zona A (R0)+49

(R1) Zona B (R1)+49

Subprograma para el intercambio de zonas


Generalizado para zonas de longitud L, que se le pasa por R10:

0000 E3A04000 0004 0008 000C 0010 0014 0018 001C 0020 E5D02000 E5D13000 E4C12001 E4C03001 E2944001 E3540032 1AFFFFF8 E1A0F00E

mov r4,#0 @ (R4) es un contador bucle: ldrb r2,[r0] @ (R0): puntero a una zona ldrb r3,[r1] @ (R1): puntero a la otra strb r2,[r1],#1 strb r3,[r0],#1 adds r4,r4,#1 cmp r4,r10 bne bucle @ FFFF8 = repr(-8); 0x1C+8-4*8 = 4 mov pc,lr @ (direccin de bucle)

Para comprobarlo tenemos que escribir un programa que:


1 2

rellene dos zonas de memoria con datos: dnde?, cmo? inicialice R10 con la longitud y R0 y R1 con las direcciones de comienzo: cmo?

El ensamblador da facilidades para esto.


Tema 3: Estructura y funcionamiento de procesadores 51

.text @ @ @ @

Directivas para inclusin de datos: ejemplos

Indica que lo que sigue es cdigo ejecutable Aqu vendran instrucciones de programa y subprogramas Como no hay nada, la direccin del primer dato es 0 (0x1000 una vez cargado en ARMSim#)

.data @ Indica que lo que sigue son datos .byte 64, 'A', 0b1000010 @ inserta los bytes 0x40, 0x41 y 0x42 .align @ inserta de uno a tres bytes 0x00 de modo que la @ direccin siguiente sea mltiplo de 4 .word 0x1AFFFFF8 @ inserta los bytes 0xF8, 0xFF, 0xFF y 0x1A @ (si el convenio es extremista menor) .skip 50 @ deja libres 50 bytes (valores indefinidos) .ascii "esta es una cadena" @ inserta los caracteres ASCII (18) .asciz "y esta es otra cad" @ aade 0x00 al final (19 bytes) .byte 255 @ otro byte, para comprobar lo anterior .end Mapa de memoria en ARMSim# (con Word Size 8 bits):

Pero cmo se accede desde el programa a esos datos?


Tema 3: Estructura y funcionamiento de procesadores 52

Modo preindexado inmediato (I = 0, P = 1)


31 Cond 28 0 1 25 24 22 20 19 Rn 16 15 Rd 12 11 Dist 0 I P U B WL

DE = (Rn)(Dist) Si U = 1, +; si U = 0, Si W = 1, (Rn)(Dist) Rn Ejemplos:


Cdigo fuente Binario (en hex.) 0xE5908004 0xE5B08004 0xE5408001 0xE5C08000 0xE5C08000 0xE59F81F4 0xE59DE004 Operacin (M[(R0)+4]) R8 (M[(R0)+4]) R8; (R0)+4 R0 (R8) 8 M[(R0)-1] (R8) 8 M[(R0)] Igual que la anterior (M[(R15)+500]) R8 (R14) M[(R13)+4]; (R13)+4 R13

LDR R8, [R0, #4] LDR R8, [R0, #4]! STRB R8, [R0, #-1] STRB R8, [R0, #0] STRB R8, [R0] LDR R8, [PC, #500] LDR LR,[SP,#4]!

Utilidad: Cuando Rn es R15 = PC, el modo es relativo Cuando Rn es R13 = SP, acceso a la pila
Tema 3: Estructura y funcionamiento de procesadores 53

acceso a datos

Acceso a datos: la pseudoinstruccin LDR


Facilita la programacin en ensamblador para el acceso con direccionamiento relativo evitando el clculo de la distancia: Si identicamos una directiva de dato con una etiqueta, podemos escribir: ldr <reg>, =eti y el ensamblador genera: ldr <reg>, [pc,#<dist>] calculando la distancia dist de modo que DE = (PC) + dist = dir. de eti Instrucciones como mov r0,#257, o mov r0,#4095 no se pueden codicar (el ensamblador da error). Escribiendo: ldr <reg>, =<cte> (231 cte 231 1) el ensamblador genera, si es posible, mov <reg>,#cte (o mvn <reg>,#-cte, si es negativa) y si no, genera dos cosas:
la constante en la seccin de datos ldr <reg>, [pc,#<dist>], calculando la distancia para acceder a ella
Tema 3: Estructura y funcionamiento de procesadores 54

Ejemplos de LDR para constantes arbitrarias


00000000 E59F0008 ldr r0,=257 @ igual que ldr r0, [pc, #8] @ DE = (PC)+8 = 8+8 = 0x10 @ Si se carga a partir de la direccin d, la constante creada, @ 0x101, estar en d+0x10 y el resultado ser el mismo. @ Comprobar con ARMSim#, en el que d=0x1000 00000004 E3A00C01 ldr r0,=256 @ igual que mov r0, #256

00000008 E3E000FF ldr r0,=-256 @ igual que mvn r0, #0xFF: @ NOT(0x00...00FF) = 0xFF...FF00 @ = compl. a 2 de 256 R0 0000000C E59F0000 ldr r0 =4095 @ igual que ldr r0, [pc, #0] .end @ DE = (PC)+0 = 0x14 00000010 00000101 @ constantes generadas por el ensamblador 00000014 00000FFF @ ("pool de literales")
Tema 3: Estructura y funcionamiento de procesadores

55

Ejemplo de LDR para acceso a zona de datos


.global _start @ declaracin de _start .text intercambio: @ comienzo del subprograma 0000 E3A04000 mov r4,#0 @ o bien: ldr r4,#0 0004 E5D02000 bucle: ldrb r2,[r0] @ ... etc. (instrucciones del subprograma) 0020 E1A0F00E mov pc,lr @ retorno del subprograma 0024 0028 002C 0030 0034 E59F000C E59F100C E3A0A00A EBFFFFF2 EF000011 _start: @ etiqueta ldr r0,=zona1 @ ldr r1,=zona2 @ mov r10,#10 @ bl intercambio @ swi 0x11 .data que seala el comienzo de la ejecucin 0x24 + 8 + 0x00C = 56 = 0x38 0x28 + 8 + 0x00C = 60 = 0x3C o bien: ldr r10,#10 (las zonas son de 10 bytes) llamada al subprograma

El ensamblador ha calculado las direcciones de zona1 y zona2 y las ha puesto en un pool de constantes en 0x38 y 0x3C, y ha calculado las distancias a poner en las instrucciones que genera para las ldr
Tema 3: Estructura y funcionamiento de procesadores 56

0038 00000040 003C 0000004A 0040 00010203 zona1: .byte 0,1,2,3,4,5,6,7,8,9 04050607 0809 004A 0A0B0C0D zona2: .byte 10,11,12,13,14,15,16,17,18,19 0E0F1011 1213 .end

Modos indexados con registro


La distancia no se codica inmediatamente en el campo Dist, sino en otro registro, que puede desplazarse. Ejemplos:
Cdigo fuente postindexados:

STR R0,[R2],R5 LDR R0,[R2],R5,ASR #4 LDREQB R0,[R2],R5,LSL #5 LDR R1,[R2,R4] LDR R1,[R2,-R4]! LDR R1,[R2,R4,LSL #2]

preindexados:

Operacin (R0) M[(R2)]; (R2) + (R5) R2 (M[(R2)]) R0; (R2) + (R5)16 R2 si Z = 0 no hace nada; si Z = 1: (M[(R2)])8 R0[0..7]; 0 R0[8..31]; (R2)+(R5)32 R2 (M[(R2)+(R4)]) R1 (M[(R2)-(R4)]) R1; (R2)-(R4) R2 (M[(R2)+(R4)4]) R1

(Formatos binarios en los apuntes)


Tema 3: Estructura y funcionamiento de procesadores 57

Pila en RAM y anidamiento de subprogramas


Registro puntero de pila, SP = R13 (stack pointer) Operaciones: push: (Rx) M[(SP)]; (SP)+4 SP STR Rx,[SP],#4 pop: (M[(SP]+4) Rx; (SP)-4 SP LDR Rx,[SP,#4]!
MP

Si un subprograma llama a otro... Instrucciones de llamada:


1

SP (SP) = d d

4 +4 (pop) (push)

cima zona reservada para la pila

Guardar en la pila la direccin de retorno (push): STR LR,[SP],-#4 Bifurcar al subprograma: BL ... Sacar de la pila la direccin de retorno (pop): LDR LR,[SP,#4]! Introducirla en el contador de programa: MOV PC,LR

Instrucciones de retorno
1

En ARMSim#, 0x5400

fondo

La pila tambin puede usarse para pasar los parmetros


Tema 3: Estructura y funcionamiento de procesadores 58

Subprograma factorial que llama a otro


Si en lugar de la instruccin mul utilizamos un subprograma mult que hace (R1)(R0) R0

00000000 00000004 00000008 0000000C 00000010 00000014 00000018 0000001C 00000020 00000024 00000028 0000002C 00000030 00000034

E3A01008 EB000004 E1A08000 E3A0100A EB000001 E1A0A000 EF000011 E40DE004 E3A00001 EB000003 E2511001 1AFFFFFC E5BDE004 E1A0F00E

/* Prueba de fact con llamadas */ mov r1,#8 bl fact @ (R1)! R0 mov r8, r0 @ para comprobar resultado: 8! en R8 mov r1, #10 bl fact mov r10,r0 @ 10! en R10 swi 0x11 /* Subprograma fact con llamada a un mult */ fact: str lr,[sp],#-4 @ push LR mov r0,#1 bucle: bl mult subs r1,r1,#1 bne bucle ldr lr,[sp,#4]! @ pop LR mov pc,lr
Tema 3: Estructura y funcionamiento de procesadores 59

Mdulos
Mdulo: programa que puede ensamblarse, dando como resultado un cdigo objeto (instrucciones de mquina en binario) este cdigo objeto no puede ejecutarse, porque necesita otros mdulos. Todo programa que no sea trivial debe descomponerse en mdulos para Facilitar la depuracin: comprobacin del buen funcionamiento de cada mdulo y correccin de posibles errores. Reutilizar los mdulos para otros programas. El montador (linker) es un programa que genera un cdigo objeto ejecutable combinando los cdigos objeto de los mdulos. En cada mdulo tienen que declararse: los smbolos externos (estn denidos en otros mdulos) con la directiva extern (para que el ensamblador no genere errores), y los smbolos de acceso (los pueden utilizar otros mdulos) con la directiva global (para que el montador no genere errores).
Tema 3: Estructura y funcionamiento de procesadores 60

Ejemplo de mdulos
/* Mdulo prueba */ .global _start .extern fact 00000000 E3A01008 _start: mov r1,#8 00000004 EBFFFFFE bl fact ... 00000010 EBFFFFFE bl fact ... .end /* Mdulo factorial */ .global fact .extern mult fact: str lr,[sp],#-4 mov r0,#1 bucle: bl mult ... mov pc,lr .end

El ensamblador genera el cdigo objeto, una tabla de smbolos de acceso (_start/0) y una tabla de smbolos externos (fact/{0x4, 0x10})) El ensamblador genera el cdigo objeto, una tabla de smbolos de acceso (fact/0) y una tabla de smbolos externos (mult/8) El ensamblador genera el cdigo objeto y una tabla de smbolos de acceso (mult/0).
61

00000000 E40DE004 00000004 E3A00001 00000008 EBFFFFFE 00000018 E1A0F00E

/* Mdulo multiplica */ .global mult 00000000 E3A0C000 mult: mov r12, #0 ... mov pc,lr .end

Tema 3: Estructura y funcionamiento de procesadores

Interrupciones en BRM
Para cada causa de interrupcin, una RS (rutina de servicio) Al pasar a atender a una interrupcin, el hardware, automticamente: (CPSR) SPSR Pone modo supervisor e inhibe interrupciones en CPSR (R15) R14_SVC (para volver de la RS: (R14) R15) Direccin comienzo RS R15 Vector de interrupcin: en BRM, primera instruccin de la RS Causas y vectores de interrupcin: Interrupcin Reset Instruccin desconocida de programa IRQ Causa Activacin de la seal reset El procesador no puede descodicar la instruccin Instruccin SWI. Activacin de la seal irq. Dir. vector 0x00 0x04 0x08 0x18
62

Tema 3: Estructura y funcionamiento de procesadores

Retorno del servicio y posible mapa de memoria


Para volver de una RS, Si es SWI o instruccin desconocida, MOVS PC, LR (o MOVS R15, R14) Si es IRQ, SUBS PC, LR, #4 (o SUBS R15, R14, #4) (la instruccin interrumpida termin de ejecutarse; el valor de PC salvado fue el de la instruccin siguiente ms 8) En estos casos (destino = PC) S = 1 hace que (SPSR) CPSR Si es reset no hay que volver a ninguna parte!
0x00000000 0x00000004 0x00000008

MOV PC,#0x3F000000 B 0x00003D B 0x00017C

0x00000018

B 0x0002B8

0x00000100

RS Int. Desc.
0x00000600

RS SWI
0x00000B00

RS IRQ

0x3F000000

RS Reset

ROM
0x3FFFFFFF

Tema 3: Estructura y funcionamiento de procesadores

63

Estructura y funcionamiento de procesadores


Conceptos previos La mquina de von Neumann Evolucin de los procesadores hardware El procesador BRM Procesadores software Procesadores de lenguajes Ensambladores y montadores Compiladores e intrpretes Lenguajes de marcas y de script

Procesadores software
La denicin de la transparencia 4 (programa que transforma unos datos de entrada en unos datos de salida) es tan general que... todo programa es un procesador software! Nos referimos en particular a procesadores de lenguajes:

Procesador de lenguaje
Programa que procesa otros programas escritos en algn lenguaje no binario para que el resultado pueda ser interpretado por un procesador hardware (o por otro procesador de lenguaje intermedio). Ensambladores, compiladores e intrpretes (transparencias 5 y 6)

Tema 3: Estructura y funcionamiento de procesadores

64

El proceso de ensamblaje
Normalmente, un ensamblador traduce en dos pasos:
1

Analiza el programa fuente. Si no tiene errores sintcticos construye una tabla de smbolos interna (etiquetas y sus direcciones). Vuelve a explorar las instrucciones del programa fuente y, con ayuda de la tabla de smbolos interna, va traduciendo cada una a binario. Genera un cdigo objeto, una tabla de smbolos de acceso, una tabla de smbolos externos y un diccionario de reubicacin.

Diccionario de reubicacin:
Lista de las direcciones cuyos contenidos deben cambiarse sumndoles d cuando el cdigo objeto se cargue a partir de la direccin d y no de 0. Ejemplo: En el programa del intercambio de zonas (transp. 56),
Direccin 0x0038 0x003C 0x0040 a 0x0049 0x004A a 0x0053 Contenido puesto por el ensamblador 0x0040 (direccin de la zona 1) 0x004A (direccin de la zona 2) datos de la zona 1 datos de la zona 2

Si el cdigo se carga a partir de la direccin d = 0x1000, 0x0038 y 0x003C pasarn a ser 0x1038 y 0x103C, y a sus contenidos hay que sumarles 0x1000.
Tema 3: Estructura y funcionamiento de procesadores 65

Ejemplo de tablas de smbolos


En los mdulos prueba, factorial y multiplica (transparencia 61):
00000000 E3A01008 00000004 EBFFFFFE 00000010 EBFFFFFE /* Mdulo prueba */ .global _start .extern fact _start: mov r1,#8 bl fact ... bl fact ... /* Mdulo factorial */ .global fact .extern mult fact: str lr,[sp],#-4 mov r0,#1 bucle: bl mult ... mov pc,lr
Mdulo

prueba

factorial

00000000 E40DE004 00000004 E3A00001 00000008 EBFFFFFE 00000018 E1A0F00E

multiplica

00000000 E3A0C000

/* Mdulo multiplica */ .global mult mult: mov r12, #0 ... mov pc,lr

Smbolo Valor Externos fact 0x4,0x10 Acceso _start 0 Externos mult 0x8 Acceso fact 0 Externos Acceso mult 0

Ninguno de los mdulos genera diccionario de reubicacin

Tema 3: Estructura y funcionamiento de procesadores

66

El proceso de montaje
El montador (linker) coloca los mdulos objeto generados por el ensamblador uno tras otro, pone los valores adecuados de acuerdo con las tablas de smbolos externos y de acceso, y genera un cdigo objeto ejecutable y un diccionario de reubicacin cdigo objeto global. tabla de smbolos
mdulo fuente factorial.s Ensamblador mdulo objeto: externos tabla de smbolos factorial.o de acceso diccionario de reubicacin (vaco) cdigo objeto mdulo de carga: diccionario de reubicacin prueba (vaco)

mdulos objeto factorial.o prueba.o multiplica.o

Montador

MP mdulo de carga prueba constante de reubicacin

Cargador reubicador

cdigo ejecutable

Tema 3: Estructura y funcionamiento de procesadores

67

Lenguajes de alto nivel


Ejemplo de funcin en lenguaje C: Pseudocdigo: 1 fact mientras que n 0 { factn fact n-1 n } Programa fuente en C: int factorial(int n) { int fact = 1; while (n != 0) { fact = fact * n; n = n-1; } return fact; } Programa fuente en C: int factorial(int n) { int fact = 1; do { fact = fact * n; n = n-1; } while (n != 0); return fact; }
Tema 3: Estructura y funcionamiento de procesadores 68

O bien: Pseudocdigo: 1 fact repetir { factn fact n-1 n } hasta que n = 0

El proceso de compilacin

Funcionalmente, un compilador hace lo mismo que un ensamblador: Mdulo fuente (nombre.c) Mdulo objeto (nombre.o)

Procesalmente, es bastante ms complejo:


cdigo objeto Compilador mdulo fuente factorial.c
Analizador lxico Analizador sintctico (parser) Generador de cdigo

mdulo objeto:
Optimizador

tabla de smbolos externos tabla de smbolos de acceso diccionario de reubicacin

factorial.o

Tema 3: Estructura y funcionamiento de procesadores

69

El proceso de interpretacin

El intrprete no genera ningn cdigo objeto Cada vez que analiza un sentencia genera las rdenes oportunas para el procesador hardware (o para otro procesador intermedio, como el de grcos)

Intrprete programa fuente un_script.js


Analizador lxico Analizador sintctico (parser) Ejecutor

Tema 3: Estructura y funcionamiento de procesadores

70

Estructura y funcionamiento de procesadores


Conceptos previos La mquina de von Neumann Evolucin de los procesadores hardware El procesador BRM Procesadores software Lenguajes de marcas y de script HTML XML JavaScript

HTML (Hypertext Markup Language)


Las marcas, o etiquetas, comienzan con < y terminan con >. Elementos Con contenido: tienen una marca de apertura y otra de cierre. Ejemplo:

<p>Un prrafo que puede contener otros elementos</p> Sin contenido. Ejemplo: <img src="URL de la imagen" width="160">
Las marcas de apertura pueden contener atributos con valores: src, width... El documento debe tener un elemento raz, <html>, conteniendo dos elementos: <head>, que contiene elementos con metadatos, y <body>, que contiene elementos con datos. Estructura general de un documento HTML:

<html> <head> <meta ... > <title>...</title> </head> <body> <!-- Esto es un comentario --> <!-- ... -> </body> </html>
Tema 3: Estructura y funcionamiento de procesadores 71

Ejemplo de documento HTML


En rojo: marcado semntico; en azul: marcado de presentacin. (Mejor, en un documento CSS aparte)
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Pgina de muestra</title> </head> <body style="color:darkblue;background:#FFF8DC"> <h1 style="color:magenta">Un encabezado</h1> <p>El elemento <kbd>&lt;p&gt;</kbd> contiene texto y otros elementos. <br> Empieza con la marca <kbd>&lt;p&gt;</kbd> y termina con la marca <kbd>&lt;/p&gt;</kbd>.</p> <p><b>Esto es una lista:</b></p> <ul><li>item 1</li><li>item 2</li><li>item 3</li></ul> <p><em>Un enlace a otra pgina:</em> <a href="http://moodle.upm.es">Moodle de la UPM</a> </p> </body></html>
Tema 3: Estructura y funcionamiento de procesadores 72

XML (eXtensible Markup Language)


Como HTML, es un lenguaje de marcas y tiene una sintaxis parecida, pero... XML est concebido para el almacenamiento, el transporte y el intercambio de datos entre aplicaciones, no para su presentacin. Las marcas (etiquetas) en XML no tienen un signicado predenido. Es un metalenguaje: con documentos adicionales (DTD o XMLSchema) se denen lenguajes especcos. Ejemplo:
<aviso tipo="urgente"> <encabezado> <para>Paco</para> <de>Juan</de> <asunto>Recordatorio</asunto> </encabezado> <cuerpo>Recuerda que me debes 20 &euro;</cuerpo> </aviso>

ste es un documento XML correcto. Nosotros entendemos lo que signican las marcas, pero un procesador no, a menos que lo acompaemos de otro documento en el que se denen los signicados.
Tema 3: Estructura y funcionamiento de procesadores 73

Sintaxis (informal) de XML


Por qu el documento es correcto (o bien formado)? Porque respeta unas reglas gramaticales que denen una sintaxis: Est formado por elementos (<aviso...>...</aviso>), <encabezado>...</encabezado>...) anidados. Todos los elementos terminan con una etiqueta de cierre (</aviso>). (Pero puede haber elementos vacos: para podra haberse denido as: <para nombre= "Pedro" />) Los elementos pueden contener atributos con un valor (tipo="urgente") Puede contener entidades, construcciones que se denen aparte (&euro;) Un analizador sintctico, o parser es un procesador que comprueba que el documento respeta esas reglas.
Tema 3: Estructura y funcionamiento de procesadores 74

Semntica (informal) de XML


Para interpretar el contenido de un documento XML particular se utiliza otro documento ms general que dene la semntica para todos los documentos XML de ese tipo (es decir, el signicado de las etiquetas, los atributos, etc.) DTD (Document Type Denition) y XMLSchema permiten denir lenguajes especcos mediante reglas que expresan la forma vlida de construir documentos en esos lenguajes. Por ejemplo: El elemento <encabezado> debe contener uno o ms elementos <para> y exactamente un elemento <de>. El documento XML es un documento vlido si, adems de estar bien formado, satisface la especicacin de un DTD o un XMLSchema. Si el documento ha de transformarse a otros formatos (HTML, RTF, PDF, etc.), XSLT (Extensible Stylesheet Language Transformations) permite escribir reglas como: aviso se interpreta transformndolo a una cadena de caracteres en negrita que dice ste es un aviso de [contenido de <de>] a [contenido de <para>] de naturaleza [valor del atributo tipo]
Referencia: http://www.w3.org/XML
Tema 3: Estructura y funcionamiento de procesadores 75

JavaScript
No es Java Lenguaje interpretado que se ejecuta en un navegador (o en otra aplicacin) Pginas HTML dinmicas:
Validacin de datos antes de su envo al servidor Apertura de ventanas emergentes Cambio del contenido de los elementos cuando el cursor pasa por ellos Cambios parciales en la presentacin respondiendo a mensajes del servidor Interaccin dinmica con el servidor ...

Se usa tambin en otras aplicaciones: Acrobat Reader, libreofce.org...


Tema 3: Estructura y funcionamiento de procesadores 76

JavaScript: Ejemplo
<html> <head> <script type="text/javascript"> Antes: function factorial(n){ fact = 1; while (n != 0) { fact = fact * n; n = n-1; } return fact; } function numero(elemento) { return (parseInt(elemento.value)); Despus: } function presenta(z) { document.getElementById("F").innerHTML= "El factorial de "+z+" es "+factorial(z); } </script> </head> <body style="background:#FFF8DC"> <form>Escribe un nmero: <input type="text" value="" size="10" onChange="x = numero(this)"><br> <input type="button" value="Calcular el factorial" onClick="presenta(x)"> </form> <p id="F">Aqu aparecer el resultado</p> </body></html>

Tema 3: Estructura y funcionamiento de procesadores

77

AJAX (Asynchronous JavaScript and XML)


Interaccin dinmica entre el servidor y el cliente:

1. Se produce un evento 2. Genera un XMLHttpRequest 3. Enva el XMLHttpRequest 4. Procesa el XMLHttpRequest

Internet
7. Procesa los datos 8. Actualiza la pgina
Tema 3: Estructura y funcionamiento de procesadores

5. Elabora una respuesta 6. Enva datos en XML

78

Anda mungkin juga menyukai