Instrucciones: El lenguaje del procesador

las palabras de un lenguaje de computador son conocidas como "Instrucciones" y su vocabulario es llamado "set de instrucciones".

Operaciones del Hardware del Procesador:

Como es bien sabido todo el procesador debe estar en capacidad de realizar algun tipo de operacion sobre un conjunto de datos. En el caso de la arquitectura SPARCV8 tenemos un conjunto de instrucciones de tamaño fijo de 32bits (Arquitectura RISC) $\approx$ 72 instrucciones. Todas las operacicones seran triadicas, esto significa que tendrá 3 parametros.

La instruccion suma en SPARCV8 se escribe como :

add b,c,a

tenemos entonces que en b, c estaran almacenados los valores a operar definidos como los operandos y en a se almacenara el resultado. Ejemplo de una asignación: $$f=(g+h)-(a+b)$$ En asembler tendriamos:

add g,h,f 
add a,b,g
sub f,g, f

como se pueda notar que a pesar de que la operacion es compleja en ensamblador solo puedo operar 2 operandos.

            Principio de Diseño : La simplicidad favorece la regularidad

Operandos del HW del Procesador

Anteriormente vimos que las instruciones se estan ejecuntando sobre las "variables",sin embargo en procesador NO PUEDE acceder directamente a las variables definidas en algun lenguaje de alto nivel. EL procesador solo puede acceder a REGISTROS, los cuales deberean contener los valores correctos a operar. La arquitectura SPARCV8(scalable processor architecture) contiene entre 40-520 registros que pueden ser utilizados. sin embargo la cantidad exacta depende directamente de la implementacion.

La arquitectura SPARC V8 clasifica sus registros en 4 grandes tipos:

  • Registros de entrada: 8 Registros de proposito general, de 32 bits que por estandar deberan usarce para recibir parametros en una funcion.
  • Registros de salida: 8 registros de proposito general, de 32 bits que por estandar sera usados para retornar valores en una funcion.
  • Registros locales: 8 registros de proposito general, de 32 bits por estandar seran usados para almacenar variables dentro de una funcion.
  • Registros Globales: 8 Registros de proposito general de 32 bits por estandar se sugiere su uso para el almacenamiento de variables globales en forma general estos registros deberan llamarse por sus letras iniciales y anteponerles un signo de porcentaje, por ejemplo :
add %o0,%o1,%i0
          Segundo Principio : Pequeño es mas rapido

Tabla de Registros

Nemonic Register Number
%i0-%i7 r24-r31
%l0-%l7 r16-r23
%o0-%o7 r8-r15
%o0-%o7 r0-r7

Ejercicio $l_1=(g+p)-(a-h)$ l1:%l0 g:%l1 p:%l2 a:%l3

add %l1,%l2,%l1
add %l3,%l0,%l0
sub %l1,%l0,%l0

Operandos en Memoria

load $\longrightarrow$ ld

store $\longrightarrow$ st

Cuando un procesador necesita acceder a un gran nummero de datos, se hace necesario que pueda acceder a memoria principal. Estos accesos permitiran que el sitema pueda utilizar la mayor cantidad de informacion para realizar sus operaciones . En la arquitectura SPARCV8 existen dos tipos de instrucciones para realizar esta tarea, las instrucciones de LOAD y las de STORE.

ld [address] regrd
st regrd, [address]

In [ ]: