Ensamblador Solaris sobre SPARC - Ladyada.usach.cl
Ensamblador Solaris sobre SPARC - Ladyada.usach.cl
Ensamblador Solaris sobre SPARC - Ladyada.usach.cl
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
1<br />
<strong>Ensamblador</strong> <strong>Solaris</strong> <strong>sobre</strong> <strong>SPARC</strong><br />
Danilo Riffo C. – danriffo@gmail.com<br />
Sebastián Romero S. – sebaslac1@gmail.com<br />
<br />
Resumen –desde la creación del primer chip hasta los mas<br />
actuales se ha necesitado de programarlos desde su nivel mas<br />
bajo, de ahí es el hecho el que exista Assembler, en este articulo se<br />
hablara del procesador <strong>SPARC</strong>, sistema Operativo <strong>Solaris</strong>,<br />
NetBeans, y su programación de <strong>SPARC</strong> en base Assembler.<br />
Palabras <strong>cl</strong>ave –Assembler, Sistema Operativo, computadores,<br />
programación, Procesadores, Chips.<br />
I. NOMENCLATURA<br />
<strong>SPARC</strong>: Scalable Processor ARChitecture.<br />
NetBeans: procesador y compilador de algoritmos versátil,<br />
usa java, C/C++, ASM, etc.<br />
D<br />
II. INTRODUCTION<br />
ecadas atrás cuando se creo el primer chip, surgió la<br />
necesidad de darle instrucciones, esas pequeñas<br />
instrucciones se ejecutaban mediante pulsos eléctricos, mas<br />
adelante con la tecnología un poco mas avanzada se pudo<br />
programar mediante una consola, pero este dispositivo no se<br />
podía volver a programar, después surgió la problemática de<br />
comandar todos los otros dispositivos con un solo dispositivo<br />
regulador, de ahí comienza el concepto de CPU, después<br />
surgió la problemática que varios ensambladores de placas<br />
tenían diferentes chips para cada dispositivo y surgió la<br />
necesidad de hacerla reprogramable, de ahí que se empezó a<br />
usar lenguaje de bajo nivel para poder programarlos, después<br />
se implemento assembler para procesadores x86 y RISC, el<br />
procesador en cuestión llamado <strong>SPARC</strong> esta basado en RISC,<br />
el cual tiene una alta escalabilidad.<br />
III. DESCRIPCIÓN DEL PROBLEMA<br />
Como problemas se plantean 3 interrogantes las cuales se<br />
desarrollaran en lo siguiente:<br />
A. Como ensamblar en <strong>Solaris</strong> <strong>SPARC</strong><br />
Para poder ensamblar en el sistema operativo <strong>Solaris</strong> y en el<br />
Procesador <strong>SPARC</strong> ambos propiedades de Sun Microsystems,<br />
es necesario la herramienta de programación NetBeans en su<br />
ultima versión ( versión 6.7), para programar en assembler es<br />
necesario hacer el programa en C, después de tenerlo digitado<br />
con el comando –S se puede transformar a lenguaje assembler.<br />
B. Compilador para ensamblador en <strong>Solaris</strong> <strong>SPARC</strong><br />
Como compilador y ensamblador o seudo-ensamblador se<br />
usa NetBeans en su versión más reciente (Versión 6.7), este<br />
funciona como compilador y ensamblador como se dijo<br />
anteriormente.<br />
NetBeans tiene la ventaja de que se puede programar en<br />
distintos lenguajes, ya sea Java, PHP, Python, Ruby, CSS,<br />
etcétera haciéndolo un IDE poderoso y versátil,<br />
C. Similitudes y diferencias con X86<br />
En similitudes y diferencias que existen entre estas 2<br />
familias de procesadores, es que, por un lado, <strong>SPARC</strong> es<br />
escalable, ya que en modelos modernos se subdividen rutinas<br />
entre sus nú<strong>cl</strong>eos haciéndolo mucho mas rendidor que sus<br />
rivales x86, lo cual x86 no puede hacer de forma optima, esto<br />
se llama segmentación.<br />
Su similitud en trabajar en base Assembler, ya que se eligió<br />
en gran parte mantener las mismas rutinas de programación<br />
que en x86, para no hacer el trabajo de ensamblar en sus<br />
procesadores tan engorrosos y se pudiera tomar una base<br />
conocida.<br />
IV.<br />
OBJETIVO.<br />
A. Resolver la problemática del <strong>Ensamblador</strong> <strong>sobre</strong> <strong>Solaris</strong><br />
<strong>SPARC</strong>.<br />
Explicar a la persona que no conoce acerca ensamblador<br />
<strong>sobre</strong> <strong>Solaris</strong> en <strong>SPARC</strong> entregándole conocimiento acerca de<br />
la plataforma y como ensamblar.<br />
B. Familiarizar <strong>Solaris</strong>.<br />
Entregar el conocimiento necesario para que la persona<br />
pueda comprender el sistema operativo, sus orígenes y su<br />
finalidad.<br />
C. Describir la tecnología <strong>SPARC</strong>.<br />
Describir la complejidad del procesadores en si explicar su<br />
arquitectura, su forma de funcionamiento, sus modelos mas<br />
famosos, además de las ventajas que tiene este <strong>sobre</strong> los<br />
procesadores convencionales basados en x86.
2<br />
V. SOLARIS<br />
5.1 Logo <strong>Solaris</strong><br />
La historia comienza en Silicon Valley en febrero de 1982<br />
fecha en la que nace la empresa Sun Microsystems fundada<br />
por el alemán Andy Bechtolsheim y los norteamericanos<br />
Vinod Khosla, Bill Joy, y Scott McNealy.<br />
En el mismo año de su fundación Sun comercializa su<br />
primera estación y fue bautizada como Sun-1, dicha máquina<br />
estaba gobernada por un microprocesador Motorola a 6 MHz,<br />
tenía un 1 Mbyte de RAM y un disco duro de 60 Mbyte. El<br />
sistema operativo al mando era el SunOS 1 basado en BSD 4.1<br />
(1981) incorporando TCP/IP.<br />
En el año 1984 Sun desarrolla el Sistema de archivos de red<br />
NFS (Network File System) que permite a cualquier máquina<br />
conectada a la red acceder a discos remotos como si estuvieran<br />
en la máquina local. La tecnología NFS fue licenciada<br />
gratuitamente para la industria estableciendo un nuevo<br />
estándar que incorporan en su nueva versión de sistema SunOS<br />
2 en el año 1985.<br />
Un año más tarde con la salida de la versión de SunOS 3<br />
(1986) se introducen utilidades de System V y coincide en el<br />
tiempo con el lanzamiento de la estación Sun-3 que todavía<br />
continúa basándose en un micro Motorola a 25 MHz y 32<br />
Mbyte de RAM.<br />
Ya en 1987 se produce un cambio importante en con el<br />
lanzamiento la serie Sun-4 que adopta por primera vez la<br />
arquitectura <strong>SPARC</strong> V7 RISC.<br />
SunOS 4 (1989) es la primera versión del sistema operativo<br />
que soporta la nueva arquitectura Sparc de la serie Sun-4 que<br />
continua basada en BSD 4.3 pero con cambios hacia la<br />
arquitectura System V. Con la versión SunOS 4.1.1 finaliza<br />
una primera etapa del sistema operativo a la que Sun<br />
Microsystem denomina <strong>Solaris</strong> 1 y utilizara este nombre para<br />
referirse al sistema SunOS desde 1982 a 1990.<br />
A continuación veremos la evolución <strong>Solaris</strong> 1 SunOS de<br />
1982 a 1989:<br />
1982 Febrero SunOS 1.0 basada en BSD<br />
1984 Abril SunOS 1.1 basada en BSD<br />
1985 Enero SunOS 1.2 basada en BSD<br />
1985 Mayo SunOS 2.0 basada en BSD<br />
1986 Febrero SunOS 3.0 Introduce utilidades de System V<br />
1986 Sep SunOS 3.2 Introduce utilidades de System V<br />
1988 SunOS 3.5 Introduce utilidades de System V<br />
1989 SunOS 4.0 Soporte microprocesador Sparc/<br />
arquitectura System V STREAMS I/O<br />
1990 Noviembre <strong>Solaris</strong> 1.0 (SunOS 4.1.1)<br />
<strong>Solaris</strong> 2 (1990-2006)<br />
En Julio de 1991 se produce el lanzamiento de SunOS 5.0<br />
que incorpora importantes cambios:<br />
· Pasa a denominarse <strong>Solaris</strong> 2<br />
· Se basa en System V Release 4<br />
· Se introduce CDE (Common Desktop Environment)<br />
como escritorio estándar aunque conserva OpenWindows.<br />
· Soporte de Multiprocesamiento Simétrico (SMP) que<br />
posibilita el uso de múltiples CPUs.<br />
Desde 1991 se produce un rápido avance de versiones de<br />
<strong>Solaris</strong> hasta la actual <strong>Solaris</strong> 10, la siguiente lista es un breve<br />
resumen de la evolución de <strong>Solaris</strong> y las tecnologías que al<br />
incorporado al sistema:<br />
Versión de <strong>Solaris</strong> Año Tecnologías<br />
<strong>Solaris</strong> 1.0 (SunOS 4.1.1) 1990<br />
<strong>Solaris</strong> 2.3 (SunOS 5.3) 1993 NFS V3 Y CDE<br />
<strong>Solaris</strong> 2.4 (SunOS 5.4) 1994 x86 platform<br />
<strong>Solaris</strong> 2.6 (SunOS 5.6) 1998 Kerberos, PAM,<br />
TrueType 64 bits para plataforma<br />
<strong>Solaris</strong> 7(SunOS 5.7) 1998 Ultra<strong>SPARC</strong><br />
<strong>Solaris</strong> 8 beta 1999 IPv6 support<br />
<strong>Solaris</strong> 9 <strong>SPARC</strong> 2002 <strong>Solaris</strong> Volume Manager<br />
<strong>Solaris</strong> 10 2004 Java Desktop<br />
<strong>Solaris</strong> 10 2006 Java Desktop<br />
<strong>Solaris</strong> Containers<br />
Service Management Facility (SMF)<br />
NFSv4 /ZFS<br />
Durante este tiempo Sun ha desarrollado nuevas tecnologías<br />
para mantener su sistema operativo entre los más potentes y<br />
fiables del mercado. Sun Microsystems también ha integrado<br />
en <strong>Solaris</strong> tecnologías de Software Libre y como ejemplo de<br />
esta sinergia tenemos el escritorio Gnome.<br />
A. Open<strong>Solaris</strong><br />
Open<strong>Solaris</strong> nace en Junio de 2005 y es el resultado de la<br />
liberación de la mayor parte del código fuente de <strong>Solaris</strong><br />
pasando a ser un proyecto de software libre. Desde este nuevo<br />
enfoque nacen nuevas distribuciones que aportan mejoras al<br />
sistema además de enriquecerlas con más software.<br />
B. Distribuciones Open<strong>Solaris</strong><br />
Open<strong>Solaris</strong>.org es el punto de encuentro donde se pueden<br />
ver los proyectos abiertos ya sean para crear nuevas<br />
distribuciones o grupos de trabajo que aportan nuevas<br />
funcionalidades, mejoras, software etc.<br />
De las diferentes aportaciones realizadas por comunidades<br />
de usuarios o desarrolladores nacen las siguientes<br />
distribuciones:
3<br />
<strong>Solaris</strong> 10 y <strong>Solaris</strong> 10 Express<br />
Es la versión oficial de Sun Microsystems disponible para<br />
arquitectura <strong>SPARC</strong> y x86. Es estable y robusta estando<br />
diseñada para entornos de producción donde se necesita<br />
estabilidad. Es gratuita y podemos descargarla del sitio web<br />
oficial de Sun.<br />
<strong>Solaris</strong> 10 Express contiene todas las nuevas<br />
incorporaciones de funcionalidades y software que darán lugar<br />
a la próxima versión estable de <strong>Solaris</strong> por lo tanto está<br />
recomendado para entornos de desarrollo o preproducción.<br />
Es un sistema certificado oficialmente como versión de<br />
Unix.<br />
VI. <strong>SPARC</strong><br />
<strong>SPARC</strong> (del inglés Scalable Processor ARChitecture) es<br />
una arquitectura RISC big-endian. Es decir, una arquitectura<br />
con un conjunto reducido de instrucciones.<br />
Fue originalmente diseñada por Sun Microsystems y<br />
dirigido por el ingeniero Kaa en 1985, se basa en los diseños<br />
RISC I y II de la Universidad de California en Berkeley que<br />
fueron definidos entre los años 1980 y 1982.<br />
La empresa Sun Microsystems diseñó esta arquitectura y la<br />
licenció a otros fabricantes como Texas Instruments, Cypress<br />
Semiconductor, Fujitsu, LSI Logic entre otros.<br />
<strong>SPARC</strong> es la primera arquitectura RISC abierta y como tal,<br />
las especificaciones de diseño están publicadas, así otros<br />
fabricantes de microprocesadores pueden desarrollar su propio<br />
diseño.<br />
Una de las ideas innovadoras de esta arquitectura es la<br />
ventana de registros que permite hacer fácilmente<br />
compiladores de alto rendimiento y una significativa reducción<br />
de memoria en las instrucciones load/store en relación con<br />
otras arquitecturas RISC. Las ventajas se aprecian <strong>sobre</strong> todo<br />
en programas grandes.<br />
La cpu <strong>SPARC</strong> esta compuesta de una unidad entera, UI<br />
(Integer Unit) que procesa la ejecución básica y una FPU<br />
(Floating-Point Unit) que ejecuta las operaciones y cálculos<br />
de reales. La IU y la FPU pueden o no estar integradas en el<br />
mismo chip.<br />
Aunque no es una parte formal de la arquitectura, las<br />
computadoras basadas en sistemas <strong>SPARC</strong> de Sun<br />
Microsystems tienen una unidad de manejo de memoria<br />
(MMU) y un gran caché de direcciones virtuales (para<br />
instrucciones y datos) que están dispuestos periféricamente<br />
<strong>sobre</strong> un bus de datos y direcciones de 32 bits.<br />
6.1 Procesador <strong>SPARC</strong><br />
6.2 Procesador Ultra <strong>SPARC</strong>.<br />
A. Principales características<br />
- Su característica distintiva es utilizar ventanas de registros.<br />
- 32 registros de enteros de 32 bits.<br />
- 16 registros de punto flotante de 64 bits (para el caso de<br />
doble precisión) que se pueden utilizar como 32 registros de<br />
32 bits (para precisión simple).<br />
- Modos de direccionamiento:<br />
· Inmediato, (constantes de 13 bits).<br />
· Directo, (offset de 13 bits).<br />
· Indirecto, (registro + offset de 13 bits o registro + registro).<br />
- Utiliza instrucciones retardadas (saltos, load y store).<br />
- Manejo de memoria:<br />
· Espacio virtual de 4 Gigabytes.<br />
· Unidad de manejo de memoria (MMU) que trabaja con<br />
páginas de tamaño configurable.
4<br />
B. Categorías de Instrucciones<br />
La arquitectura <strong>SPARC</strong> tiene cerca de 50 instrucciones<br />
enteras, unas pocas más que el anterior diseño RISC, pero<br />
menos de la mitad del número de instrucciones enteras del<br />
6800 de Motorola.<br />
Las instrucciones de <strong>SPARC</strong> se pueden <strong>cl</strong>asificar en cinco<br />
categorías:<br />
· LOAD y STORE (La única manera de acceder a la<br />
memoria). Estas instrucciones usan dos registros o un registro<br />
y una constante para calcular la dirección de memoria a<br />
direccionar.<br />
· Instrucciones Aritméticas/Lógicas/Shift. Ejecutan<br />
operaciones aritméticas, lógicas y de desplazamiento de bits.<br />
Estas instrucciones calculan el resultado si es una función de 2<br />
operándos y guardan el resultado en un registro.<br />
· Operaciones del Coprocesador. La IU extrae las<br />
operaciones de punto flotante desde las instrucciones del bus<br />
de datos y los coloca en la cola para la FPU. La FPU ejecuta<br />
los cálculos de punto flotante con un número fijo en unidad<br />
aritmética de punto flotante, (el número es dependiente de la<br />
aplicación). Las operaciones de punto flotante son ejecutadas<br />
concurrentemente con las instrucciones de la IU y con otras<br />
operaciones de punto flotante cuando es necesario. La<br />
arquitectura <strong>SPARC</strong> también especifica una interfaz para la<br />
conexión de un coprocesador adicional.<br />
· Instrucciones de Control de Transferencia. Estas in<strong>cl</strong>uyen<br />
jumps, calls, traps y branches. El control de transferencia es<br />
retardado usualmente hasta después de la ejecución de la<br />
próxima instrucción, así el pipeline no es vaciado porque<br />
ocurre un control de tiempo. De este modo, los compiladores<br />
pueden ser optimizados por ramas retardadas.<br />
· Instrucciones de control de registros Read/Write. Estas<br />
instrucciones se in<strong>cl</strong>uyen para leer y grabar el contenido de<br />
varios registros de control. Generalmente la fuente o destino<br />
está implícito en la instrucción.<br />
VII. <strong>SPARC</strong> VS X86<br />
Como comparativa entre estos 2 tipos de familias de<br />
procesadores podemos tener varias cosas en cuenta, apartando<br />
de lado su diferente arquitectura.<br />
Primeramente la similitud en ensamblar en ambos<br />
procesadores, a primera vista podemos ver que su forma de<br />
ensamblar y su línea de código es sumamente parecida a el<br />
tipo de código que corre <strong>sobre</strong> un x86, tan solo difiere en<br />
casos puntuales, pero en forma medular es prácticamente igual<br />
su código que un x86.<br />
Como Pro que tiene <strong>SPARC</strong> es su alta escalabilidad y su<br />
aprovechamiento de segmentación de datos que se reparten<br />
entre los sub-procesadores que se encuentran dentro de el<br />
(actualmente un ULTRA-<strong>SPARC</strong> contiene 4 procesadores con<br />
2 threads cada uno, eso da un total de 8 nú<strong>cl</strong>eos, 4 Físicos y 4<br />
virtuales). Optimizando la carga de trabajo, no por nada son<br />
los procesadores preferidos por empresas que necesita gastar<br />
poco dinero y tener potencia suficiente para mover gran<br />
cantidad de datos.<br />
Y su diferenciación mas notoria es el no pago de licencia<br />
<strong>sobre</strong> su arquitectura, ya que su ingeniería es totalmente<br />
abierta, esto quiere decir que cada empresa de<br />
semiconductores puede hacer su propia versión basándose en<br />
<strong>SPARC</strong>, dando una gran probabilidad de ir mejorando errores<br />
y mejorar cada vez más su capacidad, son los opensource de<br />
los procesadores.<br />
VIII. ENSAMBLADOR SOLARIS SOBRE <strong>SPARC</strong><br />
C. Roadmap <strong>SPARC</strong><br />
8.1 Logo NetBeans<br />
1.3 avance y futuras arquitecturas basadas en <strong>SPARC</strong><br />
NetBeans se refiere a una plataforma para el desarrollo de<br />
aplicaciones de escritorio usando Java y a un entorno de<br />
desarrollo integrado (IDE) desarrollado usando la Plataforma<br />
NetBeans.<br />
La plataforma NetBeans permite que las aplicaciones sean<br />
desarrolladas a partir de un conjunto de componentes de<br />
software llamados módulos. Un módulo es un archivo Java que<br />
contiene <strong>cl</strong>ases de java escritas para interactuar con las APIs<br />
de NetBeans y un archivo especial (manifest file) que lo<br />
identifica como módulo. Las aplicaciones construidas a partir<br />
de módulos pueden ser extendidas agregándole nuevos<br />
módulos. Debido a que los módulos pueden ser desarrollados<br />
independientemente, las aplicaciones basadas en la plataforma<br />
NetBeans pueden ser extendidas fácilmente por otros<br />
desarrolladores de software.
5<br />
NetBeans es un proyecto de código abierto de gran éxito<br />
con una gran base de usuarios, una comunidad en constante<br />
crecimiento, y con cerca de 100 socios en todo el mundo. Sun<br />
MicroSystems fundó el proyecto de código abierto NetBeans<br />
en junio 2000 y continúa siendo el patrocinador principal de<br />
los proyectos.<br />
Lenguajes Soportados por NetBeans:<br />
- C/C++.<br />
- Python.<br />
- Ruby.<br />
- PHP.<br />
- AJAX<br />
- Java<br />
IX. EJEMPLOS DE PROGRAMACIÓN ASM SOBRE SOLARIS-<br />
<strong>SPARC</strong><br />
.seg "data1"<br />
.align 4<br />
L16:<br />
.ascii "hello world\n"<br />
.seg "text"<br />
.proc 04<br />
.global _main<br />
.align 4<br />
_main:<br />
!#PROLOGUE# 0<br />
sethi %hi(LF12),%g1<br />
add %g1,%lo(LF12),%g1<br />
save %sp,%g1,%sp<br />
!#PROLOGUE# 1<br />
L14:<br />
.seg "text"<br />
set L16,%o0<br />
call _printf,1<br />
nop<br />
LE12:<br />
ret<br />
restore<br />
.optim "-O~Q~R~S"<br />
LF12 = -96<br />
LP12 = 96<br />
LST12 = 96<br />
LT12 = 96<br />
X. CONCLUSIONES Y AGRADECIMIENTOS<br />
Con<strong>cl</strong>uyendo con el informe podemos darnos cuenta de lo<br />
poderosa que son estas herramientas, vienen potenciadas para<br />
sacarle su máximo provecho además son amigables con el<br />
programador, no poniéndolo en aprietos <strong>sobre</strong> como debería<br />
programar en una nueva plataforma.<br />
Agradecemos al equipo de Sun Microsystems por su<br />
material que nos fue de bastante ayuda a las personas que nos<br />
apoyaron y a nuestros compañeros.<br />
XI. REFERENCIAS<br />
http://developers.sun.com/solaris/arti<strong>cl</strong>es/x86_assembly_lang.<br />
html<br />
http://docs.sun.com/app/docs/doc/817-5477/eqbuia=view<br />
http://en.wikibooks.org/wiki/<strong>SPARC</strong>_Assembly<br />
http://docs.sun.com/app/docs/doc/816-1681<br />
http://www.cs.<strong>cl</strong>emson.edu/~mark/sparc_assembly.html<br />
http://es.wikipedia.org/wiki/Sun_<strong>SPARC</strong><br />
http://www.dcc.uchile.<strong>cl</strong>/~rbaeza/cursos/proyarq/maraya/nod<br />
e9.html<br />
http://www.geocities.com/fuentes_d/sparc.html<br />
http://www.content4reprint.com/view/spanish-83913.htm<br />
http://sistemasoperativossun.wikiole.com/HISTORIA+Y+EV<br />
OLUCION+DEL+SISTEMA+OPERATIVO+SOLARIS<br />
http://es.wikipedia.org/wiki/<strong>Solaris</strong>_(sistema_operativo)<br />
http://www.content4reprint.com/view/spanish-83841.htm<br />
http://developers.sun.com<br />
XII. BIOGRAFIA<br />
Andreas von Bechtolsheim<br />
(nacido en Alemania en 1955)<br />
es uno de los fundadores de<br />
Sun Microsystems junto a<br />
Vinod Khosla, Hill Joy, y Scott<br />
McNeally.<br />
Bechtolsheim se graduó en<br />
la Universidad Técnica de Múnich (Alemania) y recibió su<br />
posgrado en ingeniería electrónica en la Universidad Carnegie<br />
Mellon.<br />
En la Universidad de Stanford, Bechtolsheim diseñó una<br />
computadora de gran alcance que llamó workstation (estación<br />
de trabajo en inglés) con establecimiento de red incorporado<br />
que ejecutaba el sistema operativo Unix. Desarrolló esta<br />
estación de trabajo harto de esperar los tiempos de proceso del<br />
sistema central de la universidad.<br />
Khosla le ayudó, con intención de crear un negocio que se<br />
dedicara a vender esa estación de trabajo. También se unió a<br />
McNealy que estaba en otra compañía tras terminar su MBA<br />
en la Stanford Graduate School of Business en 1980.<br />
Llamaron a la compañía Sun como acrónimo de "Stanford<br />
University Network." Bechtolsheim dejó Stanford, donde se<br />
había apuntado en en un programa de Doctor en Filosofía, para<br />
fundar la compañía.