Está en la página 1de 18

COMPUTER ORGANIZATION AND ARM

Edition
DESIGN
The Hardware/Software Interface

Unidad 2
Instrucciones: el
lenguaje de los
procesadores
§2.1 Introduction
Set de instrucciones
■ Son todas los comandos que se le pueden
dar a un procesador.
■ Cada procesador tiene su propio set.
■ Pero todos tienen muchos aspectos similares.
■ Los primeros procesadores tenían sets
muy simples.
■ Esto simplifica la implementación.
■ Muchos de los procesadores modernos
tienen sets simples.

Chapter 2 — Instructions: Language of the Computer — 2


Set de instrucciones ARMv8
■ En este curso vamos a utilizar solo una parte del
set. Que llamaremos LEGv8
■ Lo comercializa ARM Holdings (www.arm.com)
■ Es utilizado por una gran parte del mercado de
sistemas embebidos
■ Es muy parecido a la mayoría de los sets de
instrucciones actuales.

Chapter 2 — Instructions: Language of the Computer — 3


§2.2 Operations of the Computer Hardware
Operaciones aritméticas
■ Suma y resta, tienen 3 operandos
■ Dos orígenes y un destino
ADD a, b, c // a igual b + c
■ Todas las operaciones aritméticas tienen
esta forma
■ Principio de diseño 1: La simplicidad
favorece la uniformidad.
■ La uniformidad hace que la implementación sea más
simple.
■ La simplicidad permite más rendimiento a menor costo.

Chapter 2 — Instructions: Language of the Computer — 4


Ejemplo
■ Código en C:
f = (g + h) - (i + j);
■ Código compilado LEGv8:
ADD t0, g, h // temp t0 = g + h
ADD t1, i, j // temp t1 = i + j
ADD f, t0, t1 // f = t0 - t1

Chapter 2 — Instructions: Language of the Computer — 5


§2.3 Operands of the Computer Hardware
Registros
■ Las instrucciones aritméticas usan registros.

■ LEGv8 tiene 32 × 64-bit registros.


■ Son usados para guardar y leer datos que se usan
frecuentemente.
■ Los datos de 64-bit son llamados “doubleword”
■ 31 x 64-bit registros de propósitos generales X0 a X30
■ Los datos de 32-bit son llamados “word”
■ 31 x 32-bit sub registros de propósitos generales W0 a W30

■ Principio de diseño 2: Más chico es mas rapido.


■ Lo contrario es una memoria RAM: millones de
direcciones
Chapter 2 — Instructions: Language of the Computer — 6
LEGv8 Registers
■ X0 – X7: procedure arguments/results
■ X8: indirect result location register
■ X9 – X15: temporaries
■ X16 – X17 (IP0 – IP1): may be used by linker as a
scratch register, other times as temporary register
■ X18: platform register for platform independent code;
otherwise a temporary register
■ X19 – X27: saved
■ X28 (SP): stack pointer
■ X29 (FP): frame pointer
■ X30 (LR): link register (return address)
■ XZR (register 31): the constant value 0

Chapter 2 — Instructions: Language of the Computer — 7


Ejemplo
■ Codigo C:
f = (g + h) - (i + j);
■ f, …, j in X19, X20, …, X23

■ Código compilado LEGv8:


ADD X9, X20, X21
ADD X10, X22, X23
SUB X19, X9, X10

Chapter 2 — Instructions: Language of the Computer — 8


Operaciones de memoria
■ La memoria principal es usada para datos más
complejos.
■ Arreglos, estructuras, datos dinamicos

■ Es usada para realizar operaciones aritméticas


■ Cargar valores desde la memoria en registros
■ Guardar resultados desde los registros a la memoria

■ La memoria se direcciona por bytes


■ Cada dirección identifica 8bits

■ En LEGv8 no es necesario que los datos estén


alineados en la memoria, excepto las
instrucciones y el stack.
Chapter 2 — Instructions: Language of the Computer — 9
Operaciones de memoria

Chapter 2 — Instructions: Language of the Computer — 10


Ejemplo
■ Codigo C:
A[12] = h + A[8];
■ h en X21, la dirección base de A en X22
■ Codigo LEGv8:
■ Index 8 requiere un offset de 64
LDUR X9,[X22,#64] // U for “unscaled”
ADD X9,X21,X9
STUR X9,[X22,#96]

Chapter 2 — Instructions: Language of the Computer — 11


Registros vs memoria
■ Los registros son más rápidos que la
memoria.
■ Trabajar en la memoria requiere usar las
instrucciones load y store.
■ El compilador debe usar registros para las
variables lo maximo posible.
■ Solo se debe guardar en memoria las
variables que se usan con menos frecuencia.

Chapter 2 — Instructions: Language of the Computer — 12


Operandos inmediatos
■ Cuando queremos usar constantes en una
instrucción.
ADDI X22, X22, #4

■ Principio de diseño 3: Hacer que lo más


común sea rápido.
■ Las constantes chicas son comunes.
■ Los operandos inmediatos evitan una
instrucción de carga.

Chapter 2 — Instructions: Language of the Computer — 13


§2.4 Signed and Unsigned Numbers
Binario Entero sin signo
■ Dado un binario de n bits:

■ Rango: 0 a + 2n – 1
■ Ejemplo:
■ 0000 0000 0000 0000 0000 0000 0000 10112
= 0 + … + 1×23 + 0×22 +1×21 +1×20
= 0 + … + 8 + 0 + 2 + 1 = 1110

■ Si usamos 32 bits
■ 0 a +4,294,967,295

Chapter 2 — Instructions: Language of the Computer — 14


Signados complemento a 2
■ Dado un binario de n bits:

■ Rango: –2n – 1 a +2n – 1 – 1


■ Ejemplo:
■ 1111 1111 1111 1111 1111 1111 1111 11002
= –1×231 + 1×230 + … + 1×22 +0×21 +0×20
= –2,147,483,648 + 2,147,483,644 = –410

■ Si usamos 32 bits
■ –2,147,483,648 to +2,147,483,647

Chapter 2 — Instructions: Language of the Computer — 15


Signados complemento a 2
■ El bit 31 es el bit de signo.
■ 1 para números negativos.
■ 0 para positivos.
■ –(–2n – 1) no puede ser representado.
■ Los numeros positivos tienen la misma
representación en complemento a 2 que en
unsigned.
■ Ejemplos:
■ 0: 0000 0000 … 0000
■ –1: 1111 1111 … 1111
■ Mas negativo: 1000 0000 … 0000
■ Mas positivo: 0111 1111 … 1111

Chapter 2 — Instructions: Language of the Computer — 16


Negacion signada
■ Not y sumar 1
■ Not significa 1 → 0, 0 → 1

■ Ejemplo: negar +3
■ +3 = 0000 0000 … 00112
■ –3 = 1111 1111 … 11002 + 1
= 1111 1111 … 11012

Chapter 2 — Instructions: Language of the Computer — 17


Extensión de signo
■ Es representar un número usando más bits.
■ El valor numérico debe ser el mismo
■ Hay que replicar el bit de signo hacia la
izquierda.
■ si es sin signo: completar con 0s
■ Ejemplo: 8-bit to 16-bit
■ +2: 0000 0010 => 0000 0000 0000 0010
■ –2: 1111 1110 => 1111 1111 1111 1110

■ En LEGv8
■ LDURSB: extiende el signo del byte
■ LDURB: completa con 0s

Chapter 2 — Instructions: Language of the Computer — 18

También podría gustarte