01.05.2013 Views

Estructura de computadores

Estructura de computadores

Estructura de computadores

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

CC-BY-SA • PID_00178132 11 Programación en ensamblador (x86-64)<br />

1. Arquitectura <strong>de</strong>l computador<br />

En este apartado se <strong>de</strong>scribirán a gran<strong>de</strong>s rasgos los modos <strong>de</strong> operación y<br />

los elementos más importantes <strong>de</strong> la organización <strong>de</strong> un computador basado<br />

en la arquitectura x86-64 <strong>de</strong>s<strong>de</strong> el punto <strong>de</strong> vista <strong>de</strong>l juego <strong>de</strong> instrucciones<br />

utilizado por el programador.<br />

x86-64 es una ampliación <strong>de</strong> la arquitectura x86. La arquitectura x86 fue lan-<br />

zada por Intel con el procesador Intel 8086 en el año 1978 como una arqui-<br />

tectura <strong>de</strong> 16 bits. Esta arquitectura <strong>de</strong> Intel evolucionó a una arquitectura <strong>de</strong><br />

32 bits cuando apareció el procesador Intel 80386 en el año 1985, <strong>de</strong>nomina-<br />

da inicialmente i386 o x86-32 y finalmente IA-32. Des<strong>de</strong> 1999 hasta el 2003,<br />

AMD amplió esta arquitectura <strong>de</strong> 32 bits <strong>de</strong> Intel a una <strong>de</strong> 64 bits y la llamó<br />

x86-64 en los primeros documentos y posteriormente AMD64. Intel pronto<br />

adoptó las extensiones <strong>de</strong> la arquitectura <strong>de</strong> AMD bajo el nombre <strong>de</strong> IA-32e o<br />

EM64T, y finalmente la <strong>de</strong>nominó Intel 64.<br />

IA-64<br />

Hay que apuntar que, con el procesador Itanium, Intel ha lanzado una arquitectura <strong>de</strong>nominada<br />

IA-64, <strong>de</strong>rivada <strong>de</strong> la IA-32 pero con especificaciones diferentes <strong>de</strong> la arquitectura<br />

x86-64 y que no es compatible con el juego <strong>de</strong> instrucciones <strong>de</strong>s<strong>de</strong> un punto <strong>de</strong><br />

vista nativo <strong>de</strong> las arquitecturas x86, x86-32 o x86-64. La arquitectura IA-64 se originó<br />

en Hewlett-Packard (HP) y más tar<strong>de</strong> fue <strong>de</strong>sarrollada conjuntamente con Intel para ser<br />

utilizada en los servidores empresariales y sistemas <strong>de</strong> computación <strong>de</strong> alto rendimiento.<br />

La arquitectura x86-64 (AMD64 o Intel 64) <strong>de</strong> 64 bits da un soporte mucho<br />

mayor al espacio <strong>de</strong> direcciones virtuales y físicas, proporciona registros <strong>de</strong><br />

propósito general <strong>de</strong> 64 bits y otras mejoras que conoceremos más a<strong>de</strong>lante.<br />

Cualquier procesador actual también dispone <strong>de</strong> una serie <strong>de</strong> unida<strong>de</strong>s espe-<br />

cíficas para trabajar con números en punto flotante (juego <strong>de</strong> instrucciones<br />

<strong>de</strong> la FPU), y <strong>de</strong> extensiones para trabajar con datos multimedia (juego <strong>de</strong> ins-<br />

trucciones MMX y SSE en el caso <strong>de</strong> Intel, o 3DNow! en el caso <strong>de</strong> AMD). Estas<br />

partes no se <strong>de</strong>scriben en estos materiales, ya que quedan fuera <strong>de</strong>l programa<br />

<strong>de</strong> la asignatura.<br />

Nos centraremos, por lo tanto, en las partes relacionadas con el trabajo con<br />

enteros y datos alfanuméricos.<br />

1.1. Modos <strong>de</strong> operación<br />

Los procesadores con arquitectura x86-64 mantienen la compatibilidad con<br />

los procesadores <strong>de</strong> la arquitectura IA-32 (x86-32). Por este motivo, disponen<br />

<strong>de</strong> los mismos modos <strong>de</strong> operación <strong>de</strong> la arquitectura IA-32, lo que permite

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!