Fundamentos de los Sistemas Telemáticos.pdf
-
Upload
carlos-cuarezma -
Category
Documents
-
view
129 -
download
1
Transcript of Fundamentos de los Sistemas Telemáticos.pdf
SW
HW
Fundamentos de los Sistemas TelemáticosTema 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 2
Estructura y funcionamiento de procesadores
Conceptos previos
La «máquina de von Neumann»
Evolución 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 MoodleBibliografía citada en ese documentoEjercicios y prácticas de laboratorio propuestos
Tema 3: Estructura y funcionamiento de procesadores 3
Estructura y funcionamiento de procesadores
Conceptos previosProcesadores hardware y softwareLenguajesSistemas complejos, abstracciones y modelos
La «máquina de von Neumann»
Evolución de los procesadores hardware
El procesador BRM
Procesadores software
Lenguajes de marcas y de script
Procesadores hardware y software
Procesador hardwareSistema físico que ejecuta programas previamente almacenados en unamemoria de acceso aleatorio
Procesador sotfwarePrograma que, al ejecutarse en otro procesador (hardware o software),transforma unos datos de entrada en unos datos de salida
SW
HW
Tema 3: Estructura y funcionamiento de procesadores 4
Lenguaje de máquina y lenguaje ensamblador
Lenguaje de máquina:Lenguaje binario que «entiende» el procesador hardware.Está formado por el repertorio de instrucciones (conjunto de códigos de operacióny de formatos de las instrucciones) y los convenios de representación de los datos.
Lenguaje ensamblador (assembly language):Representación simbólica, inteligible para las personas, del lenguaje de máquina.
Ejemplo:Supongamos que «11100000100000001100000000000001» (0xE080C001) esuna instrucción de máquina que le dice al procesador:«Suma los contenidos de los registros R0 y R1 deja el resultado en el R12».En lenguaje ensamblador podría ser: «add r12,r0,r1».
Programa ensamblador (assembler):Traduce programas escritos en lenguaje ensamblador a lenguaje de máquina.Es un procesador software.
Tema 3: Estructura y funcionamiento de procesadores 5
Tipos de lenguajes y de procesadores
Nivel Tipos delenguajes
Procesamiento de losprogramas
Características y ejemplos
Bajo
De máquina(binario)
Los interpreta unprocesador hardware
Ligados a la arquitecturade un procesador hardwareGAS/ARM, x86, MIPS...MASM/x86
Ensambladores Se traducen con unprograma ensamblador
«Compilados» Se traducen con unprograma compilador
Independientesdel procesador hardwareCompilados: C, Java...Interpretados: Ruby, Phyton...
Alto
«Interpretados» Se interpretan con unprograma intérprete
De script Se interpretan con unprograma intérprete
Tipo especial de interpretados:controlan a otros programasbash, JavaScript...
De marcas Se interpretan con unprograma intérprete
Tipo especial de interpretados:marcas en un documento sobresu estructura o su presentaciónHTML, XML...
Tema 3: Estructura y funcionamiento de procesadores 6
Sistemas complejos y abstracciones
Los procesadores (hw y sw) son sistemas complejos:sólo pueden describirse haciendo abstracción de detalles.
abstracción(sistema){ modelo del sistema
Dependiendo de qué es lo que interesa estudiar del sistema haydistintos niveles de abstracción y distintos tipos de modelos.
En este Tema estudiaremos1 modelos de procesadores hardware
en el nivel de «máquina convencional»y
2 modelos de procesadores software(nivel de «máquina simbólica»).
Tema 3: Estructura y funcionamiento de procesadores 7
Niveles de abstracciónEn procesadores hardware:
Nivel de circuito eléctrico: transistores, resistencias, voltajes, corrientes...(«electrónica analógica»).¡Pero un microprocesador puede contener miles de millones de transistores!Nivel de circuito lógico: puertas lógicas, operaciones («0 OR 1 = 1», etc.)(«electrónica digital»).Abstracción de los circuitos internos de las puertas, de los voltajes...¡Pero un microprocesador puede contener decenas de millones de puertas!
Nivel de máquina convencional: Buses, unidades aritmética, lógica y dedesplazamiento, registros, unidad de control, repertorio de instrucciones...Abstracción de las puertas que componen las unidades.Modelos engorrosos por el lenguaje binario.
Niveles «superiores» (hw+sw):Nivel de máquina operativa: instrucciones de máquina más llamadas alsistema. Abstracción de gestión de procesos, de almacenamiento...Nivel de máquina simbólica: en lugar de instrucciones de máquina, suexpresión en lenguaje ensamblador (o en un lenguaje de alto nivel).Abstracción de «ceros» y «unos».
Tema 3: Estructura y funcionamiento de procesadores 8
ModelosR.A.E.: 11 acepciones de «modelo»:1. m. Arquetipo o punto de referencia para imitarlo o reproducirlo....4. m. Esquema teórico [...] de un sistema o de una realidad compleja
[...] que se elabora para facilitar su comprensión y el estudio desu comportamiento.
...5. m. Objeto, aparato, construcción, etc., o conjunto de ellos realizados
con arreglo a un mismo diseño. Auto modelo 1976. Lavadora últimomodelo....
Modelo estructural: descripción del sistema como conjunto de partes(subsistemas) y sus interrelaciones.Modelo funcional: qué hace el sistema (cómo responde a lasentradas, cómo se usa).Modelo procesal: cómo lo hace (cómo funciona).
Tema 3: Estructura y funcionamiento de procesadores 9
Estructura y funcionamiento de procesadores
Conceptos previos
La «máquina de von Neumann»Modelo estructuralModelo funcionalModelo procesal
Evolución de los procesadores hardware
El procesador BRM
Procesadores software
Lenguajes de marcas y de script
La «máquina de von Neumann» (1945)
UCP
señales de control ("microórdenes")
datos
instrucciones
datos
direcciones
direcciones
instrucciones, y datos (operandos y resultados)
direcciones (de MP y de UE/S)
UAL
UC
UE/S
MP
Tema 3: Estructura y funcionamiento de procesadores 10
La «máquina de von Neumann»: componentes
Memoria principal(RAM):
dirección
obtenida a grabar
lec esc
microórdenes de la UC
palabra direccionada (40 bits)
palabra
4.096palabras
(12 bits)
palabra
(caso de lectura) (caso de escritura)
Unidad aritmética y lógica:
operando 1 operando 2
resultado
operación 1
operación 2
operación n
...UAL
AC (40 bits)
Unidad de control:
UC
instrucción
microórdenes dirección de la
instrucción
siguiente
(de la MP)
(a la MP)
dirección de dato
(a la UAL, la MP
y/o las UE/S)
(a la MP
o las UE/S)
Tema 3: Estructura y funcionamiento de procesadores 11
La «máquina de von Neumann»:modelo funcional (1)
El contenido de una palabra (40 bits) puede interpretarseI como un número entero entre −(239 − 1) y +239 − 1 (c. a 1),
o como número fraccionario con coma fija, oI como dos instrucciones de 20 bits.
Un programa es una sucesión de instrucciones de máquina.Cada instrucción es un conjunto de bits que especifica una acciónelemental en un subconjunto de bits llamado código de operación.Formato de instrucciones:
8 12 8 12
CO CD CO CD
El programa debe estar almacenado en la memoria principalantes de comenzar su ejecución.
Tema 3: Estructura y funcionamiento de procesadores 12
La «máquina de von Neumann»:modelo funcional (2)
Hay instrucciones de procesamiento. Por ejemplo:
CO = «sumar»; CD = 7le dice a la UC: «suma al acumulador el contenido de la palabrade dirección 7 y luego sigue con la instrucción almacenada a acontinuación 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 condición, la instrucciónsiguiente a ejecutar es la que está en la dirección 700; si no, es laque está a continuación de ésta».
Tema 3: Estructura y funcionamiento de procesadores 13
La «máquina de von Neumann»: modelo procesal
En cada paso de la ejecución,la unidad de control:
1 Lee (extrae) de la MP lainstrucción cuya dirección dememoria se encuentra en elregistro contador deprograma.
2 Decodifica los bits de lainstrucción
3 Ejecuta la instruccióngenerando las microórdenesoportunas.
0 CP
estadoinicial
(CP)+1 CP
lectura deinstrucción
(M[(CP)]) UC
ejecución decodificación
(Simplificado: en los modelos de von Neumann había dosinstrucciones en cada palabra)
Tema 3: Estructura y funcionamiento de procesadores 14
Estructura y funcionamiento de procesadores
Conceptos previos
La «máquina de von Neumann»
Evolución de los procesadores hardwareTecnología y componentesModelos estructuralesModelos funcionalesModelos procesales
El procesador BRM
Procesadores software
Lenguajes de marcas y de script
Evolución: tecnología y componentes
Acorde con lo previsto en la ley de Moore:
Procesadores:I Reloj 5 KHz{ varios GHzI Acumulador{ decenas de registrosI UCP: 1 procesador{ n procesadores
Memoria:I 20 KiB{ varios GiBI Caches
Periféricos:I Terminales electromecánicos{ Ratón, LCD, almacenamiento,
sensores y actuadores, comunicaciones...I Con controladores «inteligentes»
Tema 3: Estructura y funcionamiento de procesadores 15
Modelos estructurales: interconexión por buses
BusConjunto de conductores eléctricos (cables, pistas o conexiones en uncircuito integrado) que conectan varias «estaciones» que pueden serunidades funcionales en un ordenador o nodos en una red. Un bus esun canal de difusión, lo que significa que cada estación recibe lastransmisiones de todas las demás, y todas ellas tienen igual acceso albus. (Traducido de http://foldoc.org/bus)
Sólo consideraremos buses paralelo, en los que se transmite un flujode bytes o de n bytes. También hay buses serie, en los que setransmite un flujo de bits serializados (USB),o 2n flujos 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
UC
UD
UAL
Bus A (bus de direcciones, 32 bits)
R1
bus UAL
bus B
R15 = PC
R14 = LR
R13 = SP
R0
CPSR
R14_SVC
R13_SVC
Bus D (bus de datos e instrucciones, 32 bits)
RA
RIE
RID
RIL
incrementador(+4)
VAddr[31:0]
SPSR
clk
irq
reset
req
r/w
size
wait
operando 1operando 2
RDE RDL
WData[31:0] RData[31:0]
Luego lo estudiaremos con detalle
Tema 3: Estructura y funcionamiento de procesadores 17
Procesadores hardware en un PC...
controlador
grafico (GPU)
MP
puerto
puerto
puerto
puerto
puertopuerto
USB
USB
USB
USB
USB audio
bus de memoriabus del sistema(FSB: Front−Side Bus)64b, 8512 MB/s
64b, 8512 MB/s
PCIe x16
controlador super IO
puertos serial,paralelo, PS/2.disquete...
(northbridge, o
2x16b, 2x8000 MB/s
puente sur
puente norte
linea
modem
SATApuerto
SATApuerto
SATApuerto
ethernetgigabit
Controler Hub)
MCH: Memory
L2
VGA HDMIDVI
L1i,L1d L1i,L1d L1i,L1dL1i,L1d
C0 C1 C2 C3
1b,
Controller Hub)ICH: I/O(southbridge, o
puentePCI
switch
4b, 384 MB/s
cámara
escáner
impresora
ratón
smart card
480 Mbps
LPC 4b, 16 MB/s32b, 133MB/sbus PCI
2x500 MB/sPCIe x1
Tema 3: Estructura y funcionamiento de procesadores 18
... en un teléfono móvil...
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 automático...
Fuente: http://commons.wikimedia.org/wiki/File:Atm_blockdiagram.png
Tema 3: Estructura y funcionamiento de procesadores 21
Modelos funcionales: CISC vs. RISCCISC (Complex Intruction Set Computer)
Varios cientos de instruccionesInstrucciones para operaciones complejasVarios formatos de instrucciones (uno o varios bytes)
RISC (Reduced Intruction Set Computer)(Procesadores diseñados a partir de los años 1980)
Sólo las instrucciones más frecuentesFormato de instrucciones regularArquitectura «load/store»(instrucciones de procesamiento sobre operandos en registros)Tres tipos de instrucciones:
I De «movimiento» y procesamiento entre registrosI De transferencias de datos con la memoria y los periféricosI De transferencias de control: bifurcaciones, llamadas y retornos de
subprogramas, interrupción de programa
Tema 3: Estructura y funcionamiento de procesadores 22
Direccionamiento de la memoriaEspacio 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 direccionesde palabra sean múltplos de k : «direcciones de palabra alineadas».
dir. byte
0 01
12
23 3
(b) palabras no alineadas
dir. palabra dir. palabradir. byte
(a) palabras alineadas
5
6
7
0
4
4
0
12
5
6
7
4
Tema 3: Estructura y funcionamiento de procesadores 23
Modos de direccionamientoEn las instrucciones que hacen referencia a memoria(las de transferencia de datos y las de transferencia de control)hay varios modos de obtener la dirección efectiva:
Direccionamiento directo: El de von Neumman: la dirección estácontenida en la misma instrucción.Direccionamiento inmediato: La instrucción contiene el operando.Direccionamiento indirecto: La dirección está en otra palabra de lamemoria, o (más frecuente) en un registro del procesador.Direccionamiento indexado: La dirección efectiva se obtienesumando a un registro de base, o registro de índice, un valorinmediato o el contenido de otro registro (veremos algunasvariantes en BRM).Direccionamiento relativo al CP: La dirección efectiva se obtienesumando una distancia (positiva o negativa) (offset) al valor queen ese momento tiene el contador de programa.
Tema 3: Estructura y funcionamiento de procesadores 24
Comunicaciones con periféricos
Puertos de los controladores: registros que contienendatos intercambiados con un registro del procesador, oinformaciones sobre el estado(preparado, fin de transferencia, error...), oórdenes del procesador(localización en disco, iniciar transferencia...)
Cada puerto tiene una dirección 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 innovacionesimportantes
Encadenamiento (pipelining)Realización simultánea de las fases (transparencia 14): mientras seejecuta una instrucción se está descodificando la siguiente y leyendola siguiente a ésta (cadena de profundidad 3; algunos procesadorestienen cadenas de profundidad superior a 10).
InterrupcionesMecanismo (combinación de hardware y de software) para que elprocesador pueda abandonar temporalmente la ejecución de unprograma y pasar a ejecutar una rutina de servicio que depende de lacausa de la interrupción:
petición de un periférico, fallos del hardware...petición del propio programa (llamadas al sistema operativo)
Tema 3: Estructura y funcionamiento de procesadores 26
Estructura y funcionamiento de procesadoresConceptos previos
La «máquina de von Neumann»
Evolución de los procesadores hardware
El procesador BRMModelos estructural y procesalModelo funcional: tipos y formatos de instruccionesInstrucciones de procesamiento y movimientoEl lenguaje ensamblador y la aplicación ARMSim#Instrucciones de transferencia de controlSubprogramasInstrucciones de acceso a MP y periféricosLa pseudoinstrucción LDR
MódulosInterrupciones
Procesadores software
Lenguajes de marcas y de script
El procesador BRM
BRM (Basic RISC Machine):Versión simplificada (subconjunto) de una arquitectura(familia de procesadores) real:
ARM (Advanced RISC Machines):La arquitectura de 32 bits más extendida
Simulador «ARMSim#»: http://armsim.cs.uvic.ca/
Tema 3: Estructura y funcionamiento de procesadores 27
BRM: modelo estructural
UC
UD
UAL
Bus A (bus de direcciones, 32 bits)
R1
bus UAL
bus B
R15 = PC
R14 = LR
R13 = SP
R0
CPSR
R14_SVC
R13_SVC
Bus D (bus de datos e instrucciones, 32 bits)
RA
RIE
RID
RIL
incrementador(+4)
VAddr[31:0]
SPSR
clk
irq
reset
req
r/w
size
wait
operando 1operando 2
RDE RDL
WData[31:0] RData[31:0]
Tema 3: Estructura y funcionamiento de procesadores 28
BRM: registrosR0 - R15: propósito generalPero 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 interrupción se copiaautomáticamente en SPSR («Saved PSR»)
31 28 27 07 4
N Z C IV 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 Modo
Modo: 10000 = usuario; 10011 = supervisorI: 0 = interrupciones inhibidas; 1 = interrupciones permitidasN, Z, C, V: indicadores de negativo, cero, acarreo y desbordamiento
RA, RDE, RDL, RIL, RID y RIE: «transparentes» en el nivel de máquinaconvencional
Tema 3: Estructura y funcionamiento de procesadores 29
BRM: modelo procesalCadena de profundidad 3 con instrucciones de 4 bytes:
lectura decodificación
lectura
lectura decodificación ejecución
decodificaciónlectura ejecución
lectura decodificación ejecución
d
d+4
d+8
d+12
d+16
las instrucciones
Direcciones detiempo
Cuando se está ejecutando la instrucción d el contador de programacontiene d + 8.Si la instrucción en d es una bifurcación a d1 hay que «vaciar» lacadena:
d
d+4
d+8
las instrucciones
Direcciones de ejec(d)
d1
d1+4
dec(d)
lec(d+4) dec(d+4)
lec(d+8)
lec(d1) dec(d1)
lec(d1+4)
lec(d) bifurca a d1
operaciones inútiles
Tema 3: Estructura y funcionamiento de procesadores 30
BRM: formatos de instrucciones31 28 27 0
Cond
26
Tipo
Cuatro tipos de instrucciones:
T Instrucciones de Número00 procesamiento y movimiento de datos 1601 transferencias con MP y periféricos 410 bifurcación 211 interrupción de programa 1
Cond 0 SCop RdRnI0 Op2
Cond 0 RdRnI1 P U B W L 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 ejecuciónTodas las instrucciones son condicionadas:
Cond Hex. Nem. Condición Significado0000 0 EQ Z = 1 =0001 1 NE Z = 0 ,
0010 2 CS C = 1 ≥ sin signo0011 3 CC C = 0 < sin signo0100 4 MI N = 1 Negativo0101 5 PL N = 0 Positivo0110 6 VS V = 1 Desbordamiento0111 7 VC V = 0 No desbordamiento1000 8 HI C = 1 y Z = 0 > sin signo1001 9 LS C = 0 o Z = 1 ≤ sin signo1010 A GE N = V ≥ con signo1011 B LT N,V < con signo1100 C GT Z = 0 y N = V > con signo1101 D LE Z = 1 o N,V ≤ con signo1110 E [AL] (por defecto) Siempre1111 F NV Nunca
Tema 3: Estructura y funcionamiento de procesadores 32
Procesamiento y movimiento: operaciones31 28 0111215161920212425
Cond 0 SCop RdRnI0 Op2
Cop Hex. Nem. Acción0000 0 AND operando1 AND operando2→ Rd0001 1 EOR operando1 OR exclusivo operando2→ Rd0010 2 SUB operando1 – operando2→ Rd0011 3 RSB operando2 – operando1→ Rd0100 4 ADD operando1 + operando2→ Rd0101 5 ADC operando1 + operando2 + C→ Rd0110 6 SBC operando1 – operando2 + C –1→ Rd0111 7 RSC operando2 – operando1 + C –1→ Rd1000 8 TST como AND, pero no se escribe en Rd1001 9 TEQ como EOR, pero no se escribe en Rd1010 A CMP como SUB, pero no se escribe en Rd1011 B CMN como ADD, pero no se escribe en Rd1100 C ORR operando1 OR operando2→ Rd1101 D MOV operando2 (el operando1 se ignora)→ Rd1110 E BIC operando1 AND NOT operando2→ Rd1111 F MVN NOT operando2 (el operando1 se ignora)→ Rd
operando1 = (Rn); operando2 depende de Isi S = 1 (nemónico: 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 sencillos31 28 0111215161920212425
Cond 0 SCop RdRnI0 Op2
Operando1: El contenido del registro codificado en Rn(se ignora para MOV y MVN)
Operando2: si I=0 (modo registro), el contenido del registrocodificado en los 4 bits menos significativossi I=1 (modo inmediato), el número binario en los8 bits menos significativos.
Resultado en Rd (destino)
Ejemplos:
Código fuente Binario (en hex.) OperaciónMOV R6, R0 { 0xE1A06000 (R0)→ R6ADD R0, R0, R1 { 0xE0800001 (R0)+(R1)→ R0ADDS R0, R0, R1 { 0xE0900001 (R0)+(R1)→ R0; pone indic.MOV R6, #3 { 0xE3A06003 3→ R6MOVEQ R6, #3 { 0x03A06003 Si Z=1, 3→ R6SUB R0, R0, #10 { 0xE240000A (R0)-10→ R0
Tema 3: Estructura y funcionamiento de procesadores 34
Un programa
Sumar 255 y 1 y dejar el resultado en R0
Pseudocódigo: 255 → R1
1 → R2
(R1)+(R2) → R0
Instrucciones:
(formato
31 28 0111215161920212425
Cond 0 SCop RdRnI0 Op2 )
Nemónico Código binario («código objeto») Hexadec.
MOV R1,#255 1110 00 1 1101 0 0000 0001 000011111111 E3A010FF
MOV R2,#1 1110 00 1 1101 0 0000 0010 000000000001 E3A02001
ADD R0,R1,R2 1110 00 0 0100 0 0001 0000 000000000010 E0810002
Tema 3: Estructura y funcionamiento de procesadores 35
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 @ Instrucción para el procesador
@ hardware. 0x11 le indica a
@ ARMSim# el fin de la ejecución
.end @ Directiva para el
@ ensamblador que indica el
@ fin del programa fuente
Tema 3: Estructura y funcionamiento de procesadores 36
La aplicación ARMSim#Contiene:
Un ensamblador del lenguaje ensamblador GNUUn simulador del procesador hardware ARM7TDMIOtras cosas (montador, simulador de cache...)
Para empezar a usarlo:1 Se carga el programa fuente («File→ Load»).2 Automáticamente, ARMSim# ensambla y, si no hay errores, presenta
el resultado. El código objeto se carga a partir de la dirección 0x10003 En la vista de memoria (activarla con «View→ Memory») se pueden
ver los contenidos4 Esta vista se puede seleccionar por bytes o por palabras5 Se simula la ejecución con el botón «Run»6 También se puede simular paso a paso («Debug→ Step into», o
poniendo «breakpoints»)7 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 2: listados fuente y ensamblado5: Run 6: paso a paso
3: contenidos de la memoria 4: presenta bytes o palabras
7:
co
nte
nid
os
de
lo
s r
eg
istr
os
Tema 3: Estructura y funcionamiento de procesadores 38
Procesamiento y movimiento: casos generales
31 28 0111215161920212425
Cond 0 SCop RdRnI0 Op2
Recordar los «casos sencillos»:Operando1: El contenido del registro codificado en Rn
(se ignora para MOV y MVN).Operando2:
si I=0 (modo registro), el contenido del registro codificado en los 4bits menos significativos.{ Sobran 8 bits que se puedenaprovechar para indicar operaciones de desplazamiento orotaciones previas sobre este registro.si I=1 (modo inmediato), el número binario en los8 bits menos significativos.{ [0..255]; si se usaran los 12,[0..4095]; con otro convenio, números mayores.
Tema 3: Estructura y funcionamiento de procesadores 39
Procesamiento y movimiento: modo registro31 28 0111215161920212425
Cond 0 SCop RdRnI0 Op2
Operando1: Contenido del registro codificado en Rn
Operando2 cuando I = 0 (modo registro):
Si bits 4 a 11 = 0, Op2 = (Rm)
Si bit 4 = 0, Op2 = despl(n,D,Rm); n = bits 7 a 11D = 00: LSL; D = 01: LSR; D = 10: ASR; D = 11: ROR
Si bit 4 = 1, Op2 = despl(n,D,Rm); n = (Rs)
011 34567
011 345678
D Rm10Rs
D 0 Rmdespl_inmed
Pero no hay que preocuparse: el ensamblador se encarga de calcular.Ejemplos:
Código fuente Hex. OperaciónMOVS R3, R3, LSL #4 { 0xE1B03203 (R3)×16→ R3; pone indicadoresSUB R0, R1, R2, ASR #6 { 0xE0410342 (R1)-(R2)÷64→ R0ADD R0, R0, R1, LSR R2 { 0xE0800231 (R0)+LSR(R1,R2)→ R0
Tema 3: Estructura y funcionamiento de procesadores 40
Procesamiento y movimiento: modo inmediato31 28 0111215161920212425
Cond 0 SCop RdRnI0 Op2
Operando1: Contenido del registro codificado en Rn
Operando2 cuando I = 1 (modo inmediato):
Si Operando2 ≤ 255, en los bits 0 a 7,con bits 8 a 11 = 0Si bits 8 a 11 , 0, indican una rotación ala derecha de 2×(rot) bits
011 78
inmed_8rot
operando 2 (32 bits)
x 2
UD
ROR
Ejemplos:
Código fuente Binario (en hex.) OperaciónSUBS R0, R0, #10 { 0xE250000A (R0)-10→ R0; pone pone indicadoresMOV R6, #256 { 0xE3A06C01 256→ R6MOVEQ R6, #4080 { 0x03A06EFF Si Z=1, 4080→ R6MOV R6, #257 { ¡no se puede!
Tema 3: Estructura y funcionamiento de procesadores 41
Necesidad de bifurcaciones
Frecuentemente, el algoritmo implica «tomar un decisión».Ejemplo: cálculo iterativo del factorial.Pseudocódigo: 1 → fact
repetir
{ fact×n → fact
n-1 → n
} hasta que n = 0
Adaptación 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 instrucción "mul" */
Tema 3: Estructura y funcionamiento de procesadores 42
Transferencias de control
Valor→ R15 = PC. Ejemplos:I MOV R15, #0xFFFFFF (direccionamiento directo){ 0xE3E0F4FFI MOVEQ PC, R0 (indirecto: si Z=1 bifurca a DE = (R0)){ 0x01A0F000
Instrucciones de bifurcación (B, BL, BEQ...BLHI...):31 28 27 0
Cond
26
1 0 1 L
25 24 23
Dist
DE = dir. instrucc. + 8 + 4×Dist (± 32 MiB); DE→ R15si L = 1 (instrucción BL), dir. instrucc. + 4→ LR = R14
Instrucción de interrupción de programa (SWI, SWIEQ...):31 28 27 0
Cond
26
1 1 1 1
25 24 23
Ignorado por el procesador
Tema 3: Estructura y funcionamiento de procesadores 43
Programa para el factorial
.equ n,100000 E3A00001 mov r0,#1 @ (R0) = fact0004 E3A0100A mov r1,#n @ (R1) = n, n-1...
bucle:0008 E0000091 mul r0,r1,r0 @ BRM no tiene "mul", pero ARM sí000C E2511001 subs r1,r1,#1
/* Si el resultado es 0, terminar;si no, volver a la instrucción "mul" */
0010 1AFFFFFC bne bucle0014 EF000011 swi 0x11
El ensamblador ha calculado 0xFFC para el campo Dist, que es larepresentación en complemento a 2 de -4. Al ejecutarse resultaráDE = dir. instrucc. + 8 + 4×Dist = 0x0010 + 8 + 4×(-4) = 16 + 8 - 16 = 8,que es la dirección de mul (identificada por la etiqueta bucle en elcódigo fuente).Comprobar con ARMSim# que en R0 resulta 10! = 3628800 = 0x375F00Como el programa se carga a partir de 0x1000, la dirección de mul es0x1008, y la de bne, 0x1010.
Tema 3: Estructura y funcionamiento de procesadores 44
Subprogramas
Programa al que pueden «llamar» o «invocar» otros programas pararealizar una función con distintos parámetros cada vez.
Programa
Subprograma
retorno
d1
d2
s
p
llamada 1
llamada 2
Paso de parámetrosI Por registros (paso de valor)I Por zonas de memoria apuntadas por registros
(paso de referencia)Dirección de retorno
I En un registro especial (registro de enlace, LR)F Instrucción de llamada: guarda la dirección de
retorno en LR y bifurca (instrucción BL en BRM)F Instrucción de retorno: copia el contenido de LR
en el contador de programa (MOV PC,LR en BRM)I En una pila en memoria
(necesario para anidamiento)
Tema 3: Estructura y funcionamiento de procesadores 45
Subprograma para el factorial y llamadas.equ n1,7.equ n2,10/* Llamadas al subprograma */
0000 E3A01007 mov r1,#n10004 EB000004 bl fact0008 E1A02000 mov r2,r0 @ (n1)! → R2000C E3A0100A mov r1,#n20010 EB000001 bl fact0014 E1A03000 mov r3,r0 @ (n2)! → R30018 EF000011 swi 0x11
/* Subprograma: (R1)! → R0 */001C E3A00001 fact: mov r0,#1
bucle:0020 E0000091 mul r0,r1,r00024 E2511001 subs r1,r1,#10028 1AFFFFFC bne bucle002C E1A0F00E mov pc,lr @ retorno del subprograma
¿Y si no disponemos de la instrucción mul?Escribimos un subprograma, mult, que haga (R1)×(R0)→ R0Pero al hacer bl mult se guardaría la dirección de retorno a fact en LR,
perdiéndose la de retorno al programa: problema del anidamientoSolución: guardar previamente (LR) en la memoria (en una pila, más adelante)
Tema 3: Estructura y funcionamiento de procesadores 46
Transferencias con MP y periféricos31 28 0111619202425
Cond 0 RdRnI1 P U B W L
1215
Dist
22
Cuatro instrucciones:
L B Nemónico Operación0 0 STR (Rd)→ M[DE]0 1 STRB (Rd[0..7])→8 M[DE]1 0 LDR (M[DE])→ Rd1 1 LDRB (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 (dirección 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 28 0111619202425
Cond 0 RdRnI1 P U B W L
1215
Dist
22
DE = (Rn)(Rn)±(Dist)→ Rn (independientemente de W)Si U = 1, +; si U = 0, –
Ejemplos:Código fuente Binario (en hex.) OperaciónLDR R0, [R7], #4 { 0xE4970004 (M[(R7)])→ R0; (R7) + 4→ R7STR R0, [R7], #-4 { 0xE4070004 (R0)→ M[(R7)]; (R7) - 4→ R7LDRB R0, [R7], #-8 { 0xE4570008 (M[(R7)])→8 R0; (R7) - 8→ R7STRB R0, [R7], #-1 { 0xE4470001 (R0)→8 M[(R7)]; (R7) - 1→ R7STR LR,[SP],#-4 { 0xE40DE004 (R14)→ M[(R13)]; (R13) - 4→ R13STRB R0, [R7] { 0xE5C70000 (R0)→8 M[(R7)]
Utilidad:Acceso a un byte (o una palabra) cuya dirección está en RnCuando 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,
Pseudocódigo: (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.
Código:
0000 E5D02000 ldrb r2,[r0] @ Es lo mismo que ldrb r2,[r0],#0
0004 E5D13000 ldrb r3,[r1]
0008 E5C12000 strb r2,[r1]
000C E5C03000 strb r3,[r0]
0010 E1A0F00E mov pc,lr @ Retorno del subprograma
Tema 3: Estructura y funcionamiento de procesadores 49
Intercambio de zonas de bytes
0
d
(R1)+49
Zona A(R0)
(R0)+49
(R1)Zona B
subrogramaPrograma y
¿Escribir 50 veces las instrucciones?
Mejor hacer un bucle:Las instrucciones de intercambio sonsolamente cuatro, pero, con ayuda de unainstrucción de bifurcación 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 paracomprobar el final del bucle
Tema 3: Estructura y funcionamiento de procesadores 50
Subprograma para el intercambio de zonasGeneralizado para zonas de longitud L, que se le pasa por R10:
0000 E3A04000 mov r4,#0 @ (R4) es un contador
bucle:
0004 E5D02000 ldrb r2,[r0] @ (R0): puntero a una zona
0008 E5D13000 ldrb r3,[r1] @ (R1): puntero a la otra
000C E4C12001 strb r2,[r1],#1
0010 E4C03001 strb r3,[r0],#1
0014 E2944001 adds r4,r4,#1
0018 E3540032 cmp r4,r10
001C 1AFFFFF8 bne bucle @ FFFF8 = repr(-8); 0x1C+8-4*8 = 4
0020 E1A0F00E mov pc,lr @ (dirección de bucle)
Para comprobarlo tenemos que escribir un programa que:1 rellene dos zonas de memoria con datos: ¿dónde?, ¿cómo?2 inicialice R10 con la longitud y R0 y R1 con las direcciones de
comienzo: ¿cómo?El ensamblador da facilidades para esto.
Tema 3: Estructura y funcionamiento de procesadores 51
Directivas para inclusión de datos: ejemplos.text @ Indica que lo que sigue es código ejecutable
@ Aquí vendrían instrucciones de programa y subprogramas@ Como no hay nada, la dirección 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
@ dirección siguiente sea múltiplo 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" @ añade 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 ¿cómo se accede desde el programa a esos datos?
Tema 3: Estructura y funcionamiento de procesadores 52
Modo preindexado inmediato (I = 0, P = 1)31 28 0111619202425
Cond 0 RdRnI1 P U B W L
1215
Dist
22
DE = (Rn)±(Dist)Si U = 1, +; si U = 0, –Si W = 1, (Rn)±(Dist)→ Rn
Ejemplos:Código fuente Binario (en hex.) OperaciónLDR R8, [R0, #4] { 0xE5908004 (M[(R0)+4])→ R8LDR R8, [R0, #4]! { 0xE5B08004 (M[(R0)+4])→ R8; (R0)+4→ R0STRB R8, [R0, #-1] { 0xE5408001 (R8)→8 M[(R0)-1]STRB R8, [R0, #0] { 0xE5C08000 (R8)→8 M[(R0)]STRB R8, [R0] { 0xE5C08000 Igual que la anteriorLDR R8, [PC, #500] { 0xE59F81F4 (M[(R15)+500])→ R8LDR LR,[SP,#4]! { 0xE59DE004 (R14)→ M[(R13)+4]; (R13)+4→ R13
Utilidad:Cuando Rn es R15 = PC, el modo es relativo{ acceso a datosCuando Rn es R13 = SP, acceso a la pila
Tema 3: Estructura y funcionamiento de procesadores 53
Acceso a datos: la pseudoinstrucción LDR
Facilita la programación en ensamblador para el acceso condireccionamiento relativo evitando el cálculo de la distancia:
Si identificamos 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 queDE = (PC) + dist = dir. de eti
Instrucciones como mov r0,#257, o mov r0,#4095 no se puedencodificar (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:
I la constante en la sección de datosI 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 dirección 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 @ declaración de _start.textintercambio: @ comienzo del subprograma
0000 E3A04000 mov r4,#0 @ o bien: ldr r4,#00004 E5D02000 bucle: ldrb r2,[r0]
@ ... etc. (instrucciones del subprograma)0020 E1A0F00E mov pc,lr @ retorno del subprograma
_start: @ etiqueta que señala el comienzo de la ejecución0024 E59F000C ldr r0,=zona1 @ 0x24 + 8 + 0x00C = 56 = 0x380028 E59F100C ldr r1,=zona2 @ 0x28 + 8 + 0x00C = 60 = 0x3C002C E3A0A00A mov r10,#10 @ o bien: ldr r10,#10 (las zonas son de 10 bytes)0030 EBFFFFF2 bl intercambio @ llamada al subprograma0034 EF000011 swi 0x11
.data0038 00000040003C 0000004A0040 00010203 zona1: .byte 0,1,2,3,4,5,6,7,8,9
040506070809
004A 0A0B0C0D zona2: .byte 10,11,12,13,14,15,16,17,18,190E0F10111213
.end
El ensamblador ha calculado las direcciones de zona1 y zona2 y las hapuesto en un «pool» de constantes en 0x38 y 0x3C, y ha calculado lasdistancias a poner en las instrucciones que genera para las ldr
Tema 3: Estructura y funcionamiento de procesadores 56
Modos indexados con registro
La distancia no se codifica «inmediatamente» en el campo Dist, sinoen otro registro, que puede desplazarse.
Ejemplos:
Código fuente Operaciónpostindexados: STR R0,[R2],R5 (R0)→ M[(R2)]; (R2) + (R5)→ R2
LDR R0,[R2],R5,ASR #4 (M[(R2)])→ R0; (R2) + (R5)÷16→ R2LDREQB R0,[R2],R5,LSL #5 si Z = 0 no hace nada; si Z = 1:
(M[(R2)])→8 R0[0..7]; 0→ R0[8..31];(R2)+(R5)×32→ R2
preindexados: LDR R1,[R2,R4] (M[(R2)+(R4)])→ R1LDR R1,[R2,-R4]! (M[(R2)-(R4)])→ R1; (R2)-(R4)→ R2LDR R1,[R2,R4,LSL #2] (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:
I push: (Rx)→ M[(SP)]; (SP)+4→ SP{ STR Rx,[SP],#4I pop: (M[(SP]+4)→ Rx; (SP)-4→ SP{ LDR Rx,[SP,#4]!
fondo
MP
+4(pop)
−4(push)
SP
cimad
(SP) = d
En ARMSim#,0x5400
zonareservadapara la pila
Si un subprograma llama a otro...Instrucciones de llamada:
1 Guardar en la pila la dirección deretorno (push): STR LR,[SP],-#4
2 Bifurcar al subprograma: BL ...
Instrucciones de retorno1 Sacar de la pila la dirección de
retorno (pop): LDR LR,[SP,#4]!2 Introducirla en el contador de
programa: MOV PC,LR
La pila también puede usarse para pasar los parámetros
Tema 3: Estructura y funcionamiento de procesadores 58
Subprograma factorial que llama a otroSi en lugar de la instrucción mul utilizamos un subprograma mult que hace(R1)×(R0)→ R0
/* Prueba de fact con llamadas */00000000 E3A01008 mov r1,#800000004 EB000004 bl fact @ (R1)! → R000000008 E1A08000 mov r8, r0 @ para comprobar resultado: 8! en R80000000C E3A0100A mov r1, #1000000010 EB000001 bl fact00000014 E1A0A000 mov r10,r0 @ 10! en R1000000018 EF000011 swi 0x11
/* Subprograma fact con llamada a un mult */0000001C E40DE004 fact: str lr,[sp],#-4 @ push LR00000020 E3A00001 mov r0,#100000024 EB000003 bucle: bl mult00000028 E2511001 subs r1,r1,#10000002C 1AFFFFFC bne bucle00000030 E5BDE004 ldr lr,[sp,#4]! @ pop LR00000034 E1A0F00E mov pc,lr
Tema 3: Estructura y funcionamiento de procesadores 59
MódulosMódulo: programa que
puede ensamblarse, dando como resultado un código objeto(instrucciones de máquina en binario)este código objeto no puede ejecutarse, porque necesita otros módulos.
Todo programa que no sea trivial debe descomponerse en módulos paraFacilitar la depuración: comprobación del buen funcionamiento de cadamódulo y corrección de posibles errores.Reutilizar los módulos para otros programas.
El montador (linker) es un programa que genera un código objeto ejecutablecombinando los códigos objeto de los módulos.
En cada módulo tienen que declararse:los símbolos externos (están definidos en otros módulos) con la directiva«extern» (para que el ensamblador no genere errores), ylos símbolos de acceso (los pueden utilizar otros módulos) con la directiva«global» (para que el montador no genere errores).
Tema 3: Estructura y funcionamiento de procesadores 60
Ejemplo de módulos/* Módulo prueba */
.global _start
.extern fact00000000 E3A01008 _start: mov r1,#800000004 EBFFFFFE bl fact
...00000010 EBFFFFFE bl fact
....end
El ensamblador genera elcódigo objeto, una tabla desímbolos de acceso(_start/0) y una tabla desímbolos externos(fact/{0x4, 0x10}))
/* Módulo factorial */.global fact.extern mult
00000000 E40DE004 fact: str lr,[sp],#-400000004 E3A00001 mov r0,#100000008 EBFFFFFE bucle: bl mult
...00000018 E1A0F00E mov pc,lr
.end
El ensamblador genera elcódigo objeto, una tabla desímbolos de acceso(fact/0) y una tabla desímbolos externos (mult/8)
/* Módulo multiplica */.global mult
00000000 E3A0C000 mult: mov r12, #0...mov pc,lr
.end
El ensamblador genera elcódigo objeto y una tabla desímbolos de acceso(mult/0).
Tema 3: Estructura y funcionamiento de procesadores 61
Interrupciones en BRM
Para cada causa de interrupción, una RS (rutina de servicio)Al pasar a atender a una interrupción, el hardware, automáticamente:
(CPSR)→ SPSRPone modo supervisor e inhibe interrupciones en CPSR(R15)→ R14_SVC (para volver de la RS: (R14)→ R15)Dirección comienzo RS→ R15
Vector de interrupción: en BRM, primera instrucción de la RSCausas y vectores de interrupción:
Interrupción Causa Dir. vectorReset Activación de la señal reset 0x00Instruccióndesconocida
El procesador no puededescodificar la instrucción
0x04
de programa Instrucción SWI. 0x08IRQ Activación de la señal irq. 0x18
Tema 3: Estructura y funcionamiento de procesadores 62
Retorno del servicio y posible mapa de memoria
Para volver de una RS,
Si es SWI o instruccióndesconocida, MOVS PC, LR
(o MOVS R15, R14)Si es IRQ, SUBS PC, LR, #4
(o SUBS R15, R14, #4)(la instrucción interrumpidaterminó de ejecutarse; el valorde PC salvado fue el de lainstrucción siguiente más 8)En estos casos (destino = PC)S = 1 hace que (SPSR)→CPSRSi es reset ¡no hay que volver aninguna parte!
RS Int. Desc.
RS SWI
RS IRQ
RS Reset
ROM
0x3FFFFFFF
0x00000000
0x00000004
0x00000008
0x00000018
0x00000100
0x00000600
0x00000B00
MOV PC,#0x3F000000
0x3F000000
B 0x00003D
B 0x00017C
B 0x0002B8
Tema 3: Estructura y funcionamiento de procesadores 63
Estructura y funcionamiento de procesadores
Conceptos previos
La «máquina de von Neumann»
Evolución de los procesadores hardware
El procesador BRM
Procesadores softwareProcesadores de lenguajesEnsambladores y montadoresCompiladores e intérpretes
Lenguajes de marcas y de script
Procesadores software
La definición de la transparencia 4 («programa que transforma unosdatos 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 lenguajePrograma que procesa otros programas escritos en algún lenguaje nobinario para que el resultado pueda ser interpretado por unprocesador hardware (o por otro procesador de lenguaje intermedio).
Ensambladores, compiladores e intérpretes (transparencias 5 y 6)
Tema 3: Estructura y funcionamiento de procesadores 64
El proceso de ensamblajeNormalmente, un ensamblador traduce en dos pasos:
1 Analiza el programa fuente. Si no tiene errores sintácticos construye unatabla de símbolos interna (etiquetas y sus direcciones).
2 Vuelve a explorar las instrucciones del programa fuente y, con ayuda de latabla de símbolos interna, va traduciendo cada una a binario. Genera uncódigo objeto, una tabla de símbolos de acceso, una tabla de símbolosexternos y un diccionario de reubicación.
Diccionario de reubicación:Lista de las direcciones cuyos contenidos deben cambiarse sumándoles dcuando el código objeto se cargue a partir de la dirección d y no de 0.
Ejemplo: En el programa del intercambio de zonas (transp. 56),Dirección Contenido puesto por el ensamblador0x0038 0x0040 (dirección de la zona 1)0x003C 0x004A (dirección de la zona 2)0x0040 a 0x0049 datos de la zona 10x004A a 0x0053 datos de la zona 2
Si el código se carga a partir de la dirección d = 0x1000, 0x0038 y 0x003Cpasarán 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 símbolos
En los módulos prueba, factorial y multiplica (transparencia 61):/* Módulo prueba */
.global _start
.extern fact00000000 E3A01008 _start: mov r1,#800000004 EBFFFFFE bl fact
...00000010 EBFFFFFE bl fact
.../* Módulo factorial */
.global fact
.extern mult00000000 E40DE004 fact: str lr,[sp],#-400000004 E3A00001 mov r0,#100000008 EBFFFFFE bucle: bl mult
...00000018 E1A0F00E mov pc,lr
/* Módulo multiplica */.global mult
00000000 E3A0C000 mult: mov r12, #0...mov pc,lr
Módulo Símbolo Valorprueba Externos
fact 0x4,0x10Acceso
_start 0factorial Externos
mult 0x8Acceso
fact 0multiplica Externos
— —Acceso
mult 0
Ninguno de los módulos genera diccionariode reubicación
Tema 3: Estructura y funcionamiento de procesadores 66
El proceso de montajeEl montador (linker)
coloca los módulos objeto generados por el ensamblador uno tras otro,pone los valores adecuados de acuerdo con las tablas de símbolosexternos y de acceso, ygenera un código objeto ejecutable y un diccionario de reubicaciónglobal.
Cargadorreubicador
módulode carga
Ensambladormódulofuente
móduloobjeto:
Montador
módulosobjeto
módulode carga:
código objeto
diccionario de reubicación
MP
constante dereubicación
código objeto
tabla de símbolos externos
tabla de símbolos de acceso
diccionario de reubicación
factorial.s factorial.o
factorial.o
prueba.o
multiplica.o
prueba
prueba
(vacío)
(vacío)
códigoejecutable
Tema 3: Estructura y funcionamiento de procesadores 67
Lenguajes de alto nivelEjemplo de función en lenguaje C:
Pseudocódigo:1 → fact
mientras que n , 0
{ fact×n → 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;
}O bien:
Pseudocódigo:1 → fact
repetir
{ fact×n → fact
n-1 → n
} hasta que n = 0
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
El proceso de compilación
Funcionalmente, un compilador hace lo mismo que un ensamblador:
Módulo fuente (nombre.c){ Módulo objeto (nombre.o)
Procesalmente, es bastante más complejo:
módulofuente
móduloobjeto:
código objeto
tabla de símbolos externos
tabla de símbolos de acceso
diccionario de reubicación
factorial.c factorial.oOptimizadorde código
GeneradorAnalizadorsintáctico(parser)
Analizadorléxico
Compilador
Tema 3: Estructura y funcionamiento de procesadores 69
El proceso de interpretación
El intérprete no genera ningún «código objeto»
Cada vez que analiza un sentencia genera las órdenes oportunaspara el procesador hardware(o para otro procesador intermedio, como el de gráficos)
programafuente
un_script.js (parser)
Intérprete
Analizadorléxico Ejecutorsintáctico
Analizador
Tema 3: Estructura y funcionamiento de procesadores 70
Estructura y funcionamiento de procesadores
Conceptos previos
La «máquina de von Neumann»
Evolución de los procesadores hardware
El procesador BRM
Procesadores software
Lenguajes de marcas y de scriptHTMLXMLJavaScript
HTML (Hypertext Markup Language)Las marcas, o etiquetas, comienzan con «<» y terminan con «>».
ElementosI Con contenido: tienen una marca de apertura y otra de cierre. Ejemplo:
<p>Un párrafo que puede contener otros elementos</p>I 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 raíz, <html>, conteniendo dos elementos:I <head>, que contiene elementos con metadatos, yI <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 HTMLEn rojo: marcado semántico; en azul: marcado de presentación.(Mejor, en un documento CSS aparte)
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Página de muestra</title>
</head>
<body style="color:darkblue;background:#FFF8DC">
<h1 style="color:magenta">Un encabezado</h1>
<p>El elemento <kbd><p></kbd>
contiene texto y otros elementos.
<br> Empieza con la marca <kbd><p></kbd>
y termina con la marca <kbd></p></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 página:</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 elintercambio de datos entre aplicaciones, no para su presentación.Las marcas (etiquetas) en XML no tienen un significado predefinido.Es un metalenguaje: con documentos adicionales (DTD o XMLSchema)se definen lenguajes específicos.
Ejemplo:<aviso tipo="urgente">
<encabezado>
<para>Paco</para>
<de>Juan</de>
<asunto>Recordatorio</asunto>
</encabezado>
<cuerpo>Recuerda que me debes 20 €</cuerpo>
</aviso>
Éste es un documento XML correcto. Nosotros entendemos lo que significanlas marcas, pero un procesador no, a menos que lo acompañemos de otrodocumento en el que se definen los significados.
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 definen 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 vacíos: «para» podría habersedefinido así: <para nombre= "Pedro" />)Los elementos pueden contener atributos con un valor(tipo="urgente")Puede contener entidades, construcciones que se definen aparte(€)
Un analizador sintáctico, o «parser» es un procesador que compruebaque el documento respeta esas reglas.
Tema 3: Estructura y funcionamiento de procesadores 74
Semántica (informal) de XMLPara interpretar el contenido de un documento XML particular se utiliza otrodocumento más general que define la semántica para todos los documentosXML de ese tipo (es decir, el significado de las etiquetas, los atributos, etc.)
DTD (Document Type Definition) y XMLSchema permiten definir lenguajesespecíficos mediante reglas que expresan la forma válida de construirdocumentos en esos lenguajes. Por ejemplo: «El elemento <encabezado> debecontener uno o más elementos <para> y exactamente un elemento <de>».
El documento XML es un documento válido si, además de estar bien formado,satisface la especificación 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 escribirreglas como:«aviso se interpreta transformándolo a una cadena de caracteres en negritaque 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 JavaLenguaje interpretado que se ejecuta en un navegador(o en otra aplicación)Páginas HTML dinámicas:
I Validación de datos antes de su envío al servidorI Apertura de ventanas emergentesI Cambio del contenido de los elementos cuando el cursor pasa por
ellosI Cambios parciales en la presentación respondiendo a mensajes
del servidorI Interacción dinámica con el servidorI ...
Se usa también en otras aplicaciones: Acrobat Reader,libreoffice.org...
Tema 3: Estructura y funcionamiento de procesadores 76
JavaScript: Ejemplo<html><head><script type="text/javascript">function factorial(n){fact = 1;while (n != 0){ fact = fact * n;
n = n-1;} return fact;
}function numero(elemento) {return (parseInt(elemento.value));
}function presenta(z) {document.getElementById("F").innerHTML="El factorial de "+z+" es "+factorial(z);}</script></head><body style="background:#FFF8DC"><form>Escribe un número:<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>
Antes:
Después:
Tema 3: Estructura y funcionamiento de procesadores 77
AJAX (Asynchronous JavaScript and XML)Interacción dinámica entre el servidor y el cliente:
Internet
1. Se produceun evento
2. Genera un XMLHttpRequest
XMLHttpRequest
3. Envía el
7. Procesa losdatos
la página
8. Actualiza
6. Envía datosen XML
respuesta5. Elabora una
4. Procesa elXMLHttpRequest
Tema 3: Estructura y funcionamiento de procesadores 78