# data[].attributes.headline
Características generales de la arquitectura ARM

# data[].attributes.subject
Características generales de la arquitectura ARM

# data[].attributes.body
ARM es una arquitectura RISC (Reduced Instruction Set Computer=Ordenador con Conjunto Reducido de Instrucciones) de 32 bits, salvo la versión del core ARMv8- A que es mixta 32/64 bits (bus de 32 bits con registros de 64 bits). Se trata de una arquitectura licenciable, quiere decir que la empresa desarrolladora ARM Holdings diseña la arquitectura, pero son otras compañías las que fabrican y venden los chips, llevándose ARM Holdings un pequeño porcentaje por la licencia

# data[].attributes.body
La arquitectura ARMv6 presenta un conjunto de 17 registros (16 principales más uno de estado) de 32 bits cada uno.

Registros Generales.
Su función es el almacenamiento temporal de datos. Son los 13 registros que van R0 hasta R12.

Registros Especiales.
Son los últimos 3 registros principales: R13, R14 y R15. Como son de propósito especial, tienen nombres alternativos.

Registro CPSR.
Almacena las banderas condicionales y los bits de control. Los bits de control definen la habilitación de interrupciones normales (I), interrupciones rápidas (F), modo Thumb 1 (T) y el modo de operación de la CPU.

# data[].attributes.body
El ensamblador es un lenguaje de bajo nivel que permite un control directo dela CPU y todos los elementos asociados. Cada línea de un programa ensambladorconsta de una instrucción del procesador y la posición que ocupan los datos de esainstrucción.

# data[].attributes.body
Los pasos habituales para hacer un programa (en cualquier lenguaje) son los siguientes: lo primero es escribir el programa en el lenguaje fuente mediante un editor de programas. El resultado es un fichero en un lenguaje que puede entender el usuario, pero no la máquina.

# data[].attributes.body
Recuerda que en laboratorio las raspberries no tienen monitor ni teclado, la única conexión con el mundo real es el puerto Ethernet. En el apéndice C se explica otro mecanismo para conectar. Así que antes de nada averigua cuál es la dirección IP de la Raspberry Pi dentro de la red local. Por defecto el usuario es pi y la contraseña raspberry. Suponiendo que la dirección IP asignada es 192.168.1.42, utilizaremos ssh

# data[].attributes.body
La traducción o ensamblado de un módulo fuente (nombreprograma.s) se realiza con el programa Gnu Assembler, tanto el comando as como el nombre del programa son sensibles a las mayúsculas. Por tanto el comando debe ir en minúsculas y el nombre como queramos, pero recomendamos minúsculas también. Las opción -o nombreprograma.o puede ir después de nombreprograma.s.

# data[].attributes.headline
Configuración del entorno para realizar las prácticas en casa

# data[].attributes.subject
Configuración del entorno para realizar las prácticas en casa

# data[].attributes.body
Ejecución de la imagen de raspbian en el emulador QEMU

# data[].attributes.body
eRecordemos que cuando se representa cualquier dato en memoria, éste tiene un valor explícito (el que tiene como dato guardado en binario) y un valor implícito (el que tiene interpretado como un tipo de dato determinado o como una instrucción). En este apartado queremos que veais la diferencia entre el valor explícito y el valor implícito interpretado como un natural y como un entero.

# data[].attributes.body
En este apartado veremos el funcionamiento de las instrucciones de desplazamiento y rotación. Las instrucciones de desplazamiento pueden ser lógicas o aritméticas. Los desplazamientos lógicos desplazan los bit del registro fuente introduciendo ceros (uno o más de uno).

# data[].attributes.body
Las instrucciones de multiplicación admiten muchas posibilidades, debido a que es una operación en la cual el resultado tiene el doble de bits que cada operando. En la siguiente tabla vemos las 5 instrucciones de multiplicación que existen.

# data[].attributes.body
Supón que tienes dos variables de tamaño 1 byte, var1 y var2, con los valores 11110000b y 10101010b. Calcula el resultado de hacer una operación AND y una operación OR entre las dos variables.