PDF de programación - Módulo 8: Lenguaje Máquina y Ensamblador - ARM

Imágen de pdf Módulo 8: Lenguaje Máquina y Ensamblador - ARM

Módulo 8: Lenguaje Máquina y Ensamblador - ARMgráfica de visualizaciones

Publicado el 3 de Junio del 2019
451 visualizaciones desde el 3 de Junio del 2019
6,4 MB
55 paginas
Creado hace 4a (12/02/2016)
12/02/2016

1

2

1

ARM

fc2

fc2

 Architecture: programmer’s view 

of computer
– Defined by instructions 

& operand locations

 Microarchitecture: how to 

implement an architecture in 
hardware

12/02/2016

 Fue un matemático húngaro‐estadounidense
 Realizó contribuciones importantes en física cuántica, análisis 
funcional, teoría de conjuntos, informática, economía, análisis 
numérico, estadística …

 Fue pionero de la computadora digital moderna 

introduciendo el concepto de programa almacenado en
memoria.
– Los programas almacenados dieron

a las computadoras flexibilidad y 
confiabilidad, haciéndolas más 
rápidas y menos sujetas a errores 
que los programas mecánicos. 

– Además se podían crear programas 
que escribieran en la memoria otros 
programas.

program simple;
var
integer
begin

a, b, p:

a := 5;
b := 3;
p := a * b;

end

fc2

fc2

3

simple:

leal 4(%esp), %ecx
andl $-16, %esp
pushl -4(%ecx)
pushl %ebp
movl %esp, %ebp
pushl %ecx
subl $16, %esp
movl $5, -16(%ebp)
movl $3, -
12(%ebp)……….

457f 464c 0101 0001 0000 0000 0000 0000
0002 0003 0001 0000 8280 0804 0034 0000
0df0 0000 0000 0000 0034 0020 0007 0028
0022 001f 0006 0000 0034 0000 8034 0804
8034 0804 00e0 0000 00e0 0000 0005 0000
0004 0000 0003 0000 0114 0000 8114 0804
8114 0804 0013 0000 0013 0000 0004 0000
0001 0000 0001 0000 0000 0000 8000 0804
8000 0804 046c 0000 046c 0000 0005 0000
1000 0000 0001 0000 046c 0000 946c 0804
946c 0804 0100 0000 0104 0000 0006 0000
1000 0000 0002 0000 0480 0000 9480 0804
9480 0804 00c8 0000 00c8 0000 0006 0000
0004 0000 0004 0000 0128 0000 8128 0804
8128 0804 0020 0000 0020 0000 0004 0000

Memoria

4

2

i) El usuario hace doble 
click sobre el icono del 
programa que quiere 

ejecutar

DATOS

PROGRAMA

ii) El sistema operativo 
busca el programa en las 

unidades  de 
almacenamiento

RAM

DIRECCIÓN DE 

INICIO DEL 
PROGRAMA

DATOS

PROGRAMA

iii) El sistema operativo 
almacena el programa y 
sus datos en memoria 

RAM

CPU

PC:

DIRECCIÓN INICIO PROGRAMA

DATOS

PROGRAMA

RA

RB

RW
busW

 

e
d
o
c
n
a
B

s
o
r
t
s
i
g
e
r

busA

busB

U
L
A

iv) El sistema operativo indica a la CPU dónde se encuentra la 
dirección de la primera instrucción del programa que tiene 

que ejecutar

fc2

fc2

5

6

12/02/2016

3

12/02/2016

CPU

DIRECCIÓN INICIO PROGRAMA

INSTRUCCIÓN A EJECUTAR

 

e
d
o
c
n
a
B

s
o
r
t
s
i
g
e
r

busA

busB

U
L
A

DATOS

PROGRAMA

PC:

IR:

RA

RB

RW
busW

v) La CPU busca la instrucción que tiene que ejecutar

Qué tiene que hacer
Dónde están los datos

Dónde se escribe el resultado

DATOS

PROGRAMA

PC:

IR:

RA

RB

RW
busW

CPU

DIRECCIÓN INICIO PROGRAMA

INSTRUCCIÓN A EJECUTAR

 

e
d
o
c
n
a
B

s
o
r
t
s
i
g
e
r

busA

busB

U
L
A

vi) La CPU ejecuta la instrucción

Leer los datos de entrada

Realizar la operación
Escribir el resultado

fc2

fc2

7

8

4

CPU

PC: DIRECCIÓN SIGUIENTE INSTRUCC

DATOS

PROGRAMA

RA

RB

RW
busW

 

e
d
o
c
n
a
B

s
o
r
t
s
i
g
e
r

busA

busB

U
L
A

vii) La CPU calcula automáticamente dónde se encuentra la 

siguiente instrucción del programa 

■ Depende de la década donde se estudie:

■ Los 50:

El código máquina era la única forma de

programar los computadores.

■ Los 60 y 70: Para recodificar partes críticas del código.

En 1972, sobre un PDP–9, se podía escribir código
ensamblador que se ejecutaba el doble de rápido que
código FORTRAN compilado.

■ Los 80:

Para mantener gran cantidad de código

heredado (legacy code), escrito en ensamblador.
■ Hoy: Ya hay poco “Legacy code” que mantener.

Desarrollo de Sistemas Operativos y Compiladores.

Aprender la capa de abstracción de Arquitectura.
Partiendo de esta capa comprenderemos la conexión
entre programa y hardware.

fc2

fc2

12/02/2016

9

10

5

12/02/2016

 Un computador NO entiende código ensamblador.

– Sólo entiende ceros y unos (código máquina)

 Cada instrucción escrita en código ensamblador y 
cada etiqueta, son traducidos a código máquina:

OPCODE

OPERANDO DESTINO OPERANDO FUENTE 1 OPERANDO FUENTE 2

Instr. ensamblador

ADD 

R3,      R4, 

R5

E
n
s
a
m
b
a
d
o

l

D
e
s
e
n
s
a
m
b
a
d
o

l

Desensamblado:
Es una Interpretación
del código máquina

Instr.  máquina

0010

0011

0100

0101

fc2

fc2

 Ejemplo:

Traducir a ensamblador de ARM la sentencia en C:

f=(g+h)*(i+j)

Suponemos que inicialmente g,h,i,j están en los 

registros r1,r2,r3,r4 respectivamente.

add r5,r2,r1
add r6,r3,r4
mul r7,r5,r6

11

12

6

 Conjunto de instrucciones, símbolos y reglas sintácticas y 
semánticas con el que se puede programar un ordenador 
para que resuelva un problema, realice una 
tarea/algoritmo, etc.

 Analogía con una lengua: 

Verbo
Verbos del diccionario Repertorio de instrucciones
Lenguaje completo

Lenguaje ensamblador

Instrucción

 Podemos decir que el código ensamblador es un conjunto 

de expresiones fácilmente recordables por el 
programador, en las que además se tiene en cuenta la 
arquitectura del procesador:
– No se puede utilizar cualquier expresión
– Hay que considerar donde se encuentran físicamente los datos

13

Comentarios

@Constant
@Data

.global start
.equ ONE, 0x01
.data
MYVAR: .word 0x02 @Variable
.bss
RES:
.text
start:

@Program

.space 4

MOV R0, #ONE
LDR R1, =MYVAR
LDR R2, [R1]
ADD R3, R0, R2
LDR R4, =RES
STR R3, [R4]
B .

END:
.end

 Cada línea del programa puede tener los campos:
Etiqueta
 Etiqueta: Referencias simbólicas de 

Instrucción/Directiva Operandos

posiciones de memoria (texto + datos)

 .Directiva: acciones auxiliares durante el 

ensamblado (reserva de memoria)
 Instrucción: del repertorio del ARM
 Operandos:
– Registros
– Constantes: Decimales, hexadecimal (0x) 
– Etiquetas

 Comentarios: caracteres seguidos de @.

Pueden aparecer solos en una línea.

fc2

fc2

12/02/2016

7

■ Siglas de la compañía Advanced Risc Machines Ltd.
■ Fundada en 1990 por Acorn, Apple y VLSI Tech.

■ En 1993, se unió Nippon Investment and Finance

■ Desarrollan procesadores RISC y SW relacionado
■ NO fabrica circuitos
■ Sus ingresos provienen de los “royalties” de:

■ licencias,
■ herramientas de desarrollo (HW y SW)
■ servicios de soporte

fc2

fc2

■ Unos de los más vendidos/empleados en el mundo
■ 75% del mercado de CPU empotrados de 32-bits

■ Usados especialmente en dispositivos portátiles

debido a su bajo consumo y razonable rendimiento
(MIPS/Watt)

■ Disponibles como hard/soft core

■ Fácil integración en Systems-On-Chip (SoC)

■ Ofrecen diversas extensiones:
■ Thumb (código compacto)
■ Jazelle (implementación HW de Java VM). No

disponible en la versión que usaremos.

12/02/2016

15

16

8

■ Familia: Procesadores con la misma arquitectura

(compatibilidad binaria), pero distinta implementación

fc2

fc2

 Repertorio de instrucciones

– Operaciones que se pueden realizar
– Formato de instrucción

adoptan las instrucciones máquina

 Registros de la arquitectura

• Descripción de las diferentes configuraciones de bits que 

– Conjunto de registros visibles al programador 

(datos, direcciones, estado, PC)
 Modos de direccionamiento

– Forma de especificar la ubicación de los datos dentro 

de la instrucción y modos para acceder a ellos

 Formato de los datos

– Tipos de datos que puede manipular el computador

12/02/2016

17

18

9

12/02/2016

■ 32-bits de longitud
■ 15 registros de propósito general (R0-R14)
■ R13=SP suele usarse como puntero de pila
■ R14=LR se usa como enlace o dirección de retorno

User
Mode

■ Un registro contador de programa (PC=R15)
■ Un registro estado actual del programa (CPSR)
■ Permite acceder a la vez a tres registros:

■ 2 registros fuente
■ 1 registro destino

add r5,r2,r1

■ ¡Poca capacidad pero muy rápidos!

fc2

r0
r1
r2
r3
r4
r5
r6
r7
r8
r9
r10
r11
r12

r13 (sp)
r14 (lr)
r15 (pc)

cpsr

19

 Queremos contar el número de ceros que 

contiene un vector de 1000 elementos .

ceros=0;
for(i=0;i<1000;i++){

if(A[i]==0){

}

}

ceros=ceros+1;

 Necesitamos una memoria  para manejar 

1000 elementos.

 ¿Qué debe hacer el computador en cada 

iteración del bucle?

fc2

20

10

12/02/2016

 Una secuencia (tabla) de bytes

– Cada byte tiene asignada una dirección de memoria 
– Profundidad: Si disponemos de k bits para la 

dirección podremos acceder a 2k bytes 
• Si k=10 ‐> Tamaño= 210 bytes = 1024 bytes = 1Kbyte
• Si k=6 ‐> Tamaño= 26 bytes = 64 bytes 

– Anchura: Una palabra es una cadena finita de bits,
típicamente 8, 16, 32 o 64 bits, que son manejados 
como un conjunto por la máquina,  es un parámetro 
arquitectónico.

fc2

fc2

 Palabra de 32 bits (4 bytes) 

– En este curso accederemos casi siempre a nivel de palabra

 Memoria ARM direccionable por bytes.
 Pero con accesos alineados

– Palabra de 4 bytes (instrucciones, int, float)

‐> Dirección múltiplo de 4

– Dato de tamaño 2 bytes (short int)

‐> Direcciones múltiplos de 2
– Data de tamaño byte (char) 

‐> Cualquier dirección

 Las restricciones de alineamiento :

– Desaprovechan memoria,
– pero aceleran notablemente el acceso.
– Lo utilizan la mayoría de las arquitecturas

21

22

11

 Es habitual en entornos de desarrollo visualizar la 

memoria a nivel de palabra.
– Ejemplo: palabras AABBCCDDHEX y 9070FFAAHEX 

a partir de la dirección 16.

Dirección
16
20

+0
AA
90

+1
BB
70

+2
CC
FF

+3
DD
AA

Dirección
16
20

+0
+1
DD CC
AA
FF

+2
BB
70

+3
AA
90

BIG‐ENDIAN: lectura de 
izquierda a derecha

 ARM es MIDDLE‐ENDIAN

– admite ambas organizaciones 

LITTLE‐ENDIAN: lectura de 
derecha a izquierda

 Pensemos un poco más a fondo qué tareas tiene que 
realizar el procesador cuando ejecuta una instrucción:
1. Detectar tipo de instrucción a ejecutar  P.ej. ADD
2.
3. Realizar la suma de los dos operandos con algún HW
4. Guardar el resultado en algún lugar

Leer de algún lugar los ops. fuente

 ¿Dónde estarán los operandos? (datos)

– TODOS los datos e instrucciones que manipula un 

programa se almacenan en la memoria

– Temporalmente se pueden almacenar datos en los 

registros de la CPU (banco de registros)

– Eve
  • Links de descarga
http://lwp-l.com/pdf16030

Comentarios de: Módulo 8: Lenguaje Máquina y Ensamblador - ARM (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios
Es necesario revisar y aceptar las políticas de privacidad