Publicado el 29 de Julio del 2019
573 visualizaciones desde el 29 de Julio del 2019
383,0 KB
15 paginas
Creado hace 13a (19/03/2012)
TEMA 12: ENSAMBLADOR
Si t
Mi
d
Sistemas Digitales basados en Microprocesador
Grado en Ingeniería Telemática
Digit l
b
d
© Raúl Sánchez Reíllo
1
1
ÍNDICE
Representación RTL
Modelo de Programador del Cortex-M3
Mecanismos de Programación
Saltos, Subrutinas, Interrupciones
Diagramas de Flujo
d Fl j
Di
Juego de Instrucciones del Cortex-M3
f
T
Transferencia de Datos
i d D t
Aritméticas y Lógicas
Control de Flujo
Control de Flujo
Misceláneas
Modos de Direccionamiento
Modos de Direccionamiento
/
11
2
3
1
2
0
1
1
/
i
S
s
t
e
m
a
s
D
g
ii
i
t
l
a
e
s
B
a
s
a
d
d
o
s
e
n
M
c
r
o
p
r
o
c
e
s
a
d
o
r
i
2
REPRESENTACIÓN RTL
El Register Transfer Language (RTL) es un lenguaje que
simboliza la transferencia de datos entre registros
Se utiliza, entre otras cosas, para representar el
funcionamiento de un determinado proceso
La ejecución de una instrucción
El funcionamiento de la Unidad de Control
La secuencia de pasos que conlleva una interrupción
etc.
L
especificaciones en RTL muy distintas de unos autores a
otros
otros
Mientras haya consistencia entre las representaciones, se
Las variantes son muchas, por lo que se pueden encontrar
d
l
h
t
t
i
puede considerar como válida
p
REPRESENTACIÓN RTL
En este curso se va a utilizar una representación muy
simplificada:
Paso del contenido de un registro a otro:
MAR PC ; lleva el contenido del PC al MAR
Paso del contenido de la memoria a un registro (operación de
lectura)
MBR (MAR) ; lleva el contenido que tiene la memoria en la
MBR (MAR) ; lleva el contenido que tiene la memoria en la
posición indicada por MAR, al registro MBR
Paso del contenido de un registro a memoria (operación de
( p
g
escritura)
(MAR) MBR ; lleva el contenido del registro MBR a la
MAR
memoria, a la posición indicada por MAR
i ió i di d
l
i
Operaciones con el operando fuente
PC PC + 1 ; incrementa el PC en una unidad
PC PC + 1 ; incrementa el PC en una unidad
3
4
TEMA 12: ENSAMBLADOR
Modelo del Programador
El Modelo de Programador establece el conjunto de elementos que son
d l
l
j
MODELO DEL PROGRAMADOR DEL CORTEX-M3
A la hora de programar una CPU, muchos elementos internos se
bl
d
ocultan (por ejemplo registros como el MAR, MBR, IR, etc)
El M d l d P
necesarios conocer, de la arquitectura interna de la CPU, para
realizar programas
Modelo de memoria
Tipos de Datos
Modos de Operación
ió
Registros
Mecanismos de Programación (se verán más adelante)
Mecanismos de Programación (se verán más adelante)
M d d O
6
MODELO DEL PROGRAMADOR DEL CORTEX-M3
Modelo de Memoria:
p
El Cortex-M3 direcciona bytes (es decir
sus 32 bits de direcciones son de datos de
8 bits)
Se utiliza codificación little-endian
Los datos se pueden almacenar de forma
alineada o no alineada.
El Cortex-M3 puede trabajar con 3 tipos
de datos:
Palabra (word) de 32 bits que en memoria
Palabra (word) de 32 bits, que en memoria
debe estar colocada alineada en múltiplos de
4
Semipalabra (halfword) de 16 bits, que en
memoria debe estar colocada alineada en
memoria debe estar colocada alineada en
múltiplos de 2
Byte, que en memoria puede colocarse en
cualquier dirección
MODELO DEL PROGRAMADOR DEL CORTEX-M3
Tipos de Datos:
Modos de Operación:
Thread mode: para ejecutar aplicaciones software Es el modo en el
Thread mode: para ejecutar aplicaciones software. Es el modo en el
que entra la CPU cuando sale del estado de reset
Handler mode: para gestionar las excepciones. El procesador
vuelve al modo Thread cuando ha terminado de procesar la
p
excepción
Niveles de privilegio para la ejecución de software:
Unprivileged: en este nivel el software:
Unprivileged: en este nivel, el software:
instrucción CPS
i tsistema
Tiene acceso limitado a las instrucciones MSR y MRS, y no puede utilizar la
No puede acceder al reloj del sistema, al NVIC o al bloque de control del
Puede tener acceso restringido a memoria o periféricos
todos los recursos
todos los recursos
Privileged: el software tiene acceso a todas las instrucciones y
7
8
TEMA 12: ENSAMBLADOR
Mecanismos de Programación
MECANISMOS DE PROGRAMACIÓN
El desarrollo de un programa se realiza mediante la
concatenación de instrucciones que se ejecutarán
i
l
siguiendo un flujo lineal
fl j li
i d
Sin embargo, ese flujo lineal se puede alterar mediante:
Saltos
Saltos
Subrutinas (al igual que las llamadas a función en C)
Interrupciones (al igual que ya se ha visto)
)
p
q
y
(
g
Saltos:
memoria
i
El programa continúa la ejecución en otro punto de la
Se provoca mediante una instrucción de salto condicional
B{cond}, en la que se indica la dirección a la que saltar
{co
ecc ó a a q e sa a
}, e a q e se
ca a
Si se cumple la condición, esa instrucción realiza el cambio
del valor del PC por el de la posición donde tiene que seguir
el programa
el programa
10
MECANISMOS DE PROGRAMACIÓN
Subrutinas:
Se trata de un salto temporal, volviendo posteriormente a la
p
p
instrucción siguiente a la del salto a subrutina
Se utilizan para estructurar el programa en funciones a las
que se llama repetidas veces (optimizan código)
)
tid
ódi
ll
ti
(
i
La CPU obtiene la dirección de salto de los bits que
acompañan al opcode
acompañan al opcode
Antes de realizar el salto, la CPU debe guardar el contenido
del PC, para recuperarlo posteriormente (cuando se de la
instrucción de volver)
Las instrucciones, en el caso del ARM7, se denominan
d} (b
BL{
d l PC (R15)
BL{cond} (branch with link), y guardan el valor del PC (R15)
ith li k)
en el registro de link LR (R14)
l
h
d
l
MECANISMOS DE PROGRAMACIÓN
Interrupciones:
Es un mecanismo por el cual se permite que la CPU realice
determinadas operaciones cuando haya ocurrido un
determinadas operaciones, cuando haya ocurrido un
determinado evento externo
Es como una subrutina, pero que no es llamada por el
programador (no es una instrucción concreta en el programa)
programador (no es una instrucción concreta en el programa)
Cada vez que se ejecuta, el programa principal puede estar
en una instrucción u otra
C
Cuando ocurre ese evento se pasa a ejecutar una subrutina,
t
conocida como Rutina de Atención a la Interrupción o
como Rutina de Servicio
A t
Antes de entrar a ejecutar la Rutina de Servicio, la CPU
t
l CPU
tiene que guardar el valor del PC y el contexto (que en su
versión mínima es el SR)
En algunas CPUs también se inhiben las interrupciones
En algunas CPUs también se inhiben las interrupciones
Se termina la ejecución de la Rutina de Servicio recuperando
el contexto (el valor del PC y del registro de estado)
b ti
l R ti
d S
j
d
d
i i
j
t
t
11
12
MECANISMOS DE PROGRAMACIÓN
Interrupciones:
La Rutina de Servicio es algo que se puede ejecutar en
cualquier momento y que está interrumpiendo el curso
cualquier momento, y que está interrumpiendo el curso
normal del programa
Entre la CPU y el programador se debe garantizar que,
cuando se vuelve de la Rutina de Servicio la CPU se
cuando se vuelve de la Rutina de Servicio, la CPU se
encuentra en las mismas condiciones que si no se hubiese
producido la interrupción (salvo modificaciones
intencionadas))
Debe ser una rutina razonablemente corta y efectiva, que no
deje al programa en una espera demasiado larga (un cuelgue)
Tradicionalmente tendrá que comunicar al programa
Tradicionalmente tendrá que comunicar al programa
principal que ha ocurrido una interrupción y las
consecuencias de la misma
Una CPU puede tener varias fuentes de interrupción, y
Una CPU puede tener varias fuentes de interrupción, y
pueden estar activas más de una al mismo tiempo
Algunas estarán activadas por defecto, mientras otras habrá
que activarlas
q
13
TEMA 12: ENSAMBLADOR
Juego de Instrucciones del
Cortex-M3
JUEGO DE INSTRUCCIONES DEL CORTEX-M3
El Juego de Instrucciones del Cortex-M3 es reducido en número de
instrucciones, pero muy amplio en variantes de las mismas
Por ejecución condicional
Por modo de direccionamiento y tamaño de la palabra utilizada
Para simplificar la explicación se van a seguir las siguientes pautas:
j
Se comentará primero las distintas instrucciones
Se comentará primero las distintas instrucciones
Después se detallarán:
la forma de referirse a los distintos operandos (direccionamiento)
las modificaciones del CPSR si S=1 (si se especifica S en la instrucción)
las modificaciones del CPSR si S=1 (si se especifica S en la instrucción)
las condiciones de ejecución para las instrucciones
Las instrucciones se van a desglosar en:
Transferencia de Datos
Transferencia de Datos
Entre memoria y CPU
Entre registros
Aritméticas y Lógicas
Control
Misceláneas
sino forma de tratar uno de los operandos (<Op2>)
f
Los desplazamientos y rotaciones no son instrucciones específicas,
JUEGO DE INSTRUCCIONES DEL CORTEX-M3
Simplificaciones a realizar en el curso
Todas las instrucciones van a poder ser condicionales
Esto se refleja en que cada mnemónico de instrucción va seguido, opcionalmente por
Durante este curso no se van a utilizar los códigos de condición en ninguna
un código de condición {cond}
un código de condición {cond}
instrucción salvo en las de Salto Condicional
Por tanto se ignorará en todas la parte {cond} salvo en B{cond}
Muchas instrucciones pueden determinar si modifica o no el registro de estado
Muchas instrucciones pueden determinar si modifica o no el registro de estado
En este curso se va a considerar que todas aquellas instrucciones que
puedan modificar el registro de estado, lo van a hacer
Toda instrucción que pueda utilizar el paráme
Comentarios de: Tema 12: Ensamblador - Sistemas Digitales basados en Microprocesador (0)
No hay comentarios