Anda di halaman 1dari 4

3.

El lenguaje de ensamblador para la arquitectura x64


3.1. Qu es lenguaje de ensamblador?
Es un lenguaje de programacin de bajo nivel para los computadores,
microprocesadores, microcontroladores y otros circuitos integrados programables.

NIVELES DE LENGUAJES:

Ensamblador: Es usado para traducir sentencias del lenguaje ensamblador al


cdigo de mquina del computador objetivo. Refleja directamente la
arquitectura y las instrucciones en lenguaje de mquina de la CPU, y pueden
ser muy diferentes de una arquitectura de CPU a otra.

Arquitectura

Dado que los registros de 64-bit permiten el acceso de muchos tamaos y


ubicaciones, definimos un byte como 8 bits, una palabra como 16 bits, una
palabra doble como 32 bits, una palabra cudruple como 64 bits, y una doble
palabra cudruple como 128 bits. Intel almacena bytes Little endian, lo que
significa que menos bytes significantes son almacenados en direcciones de
memoria inferiores.

La figura muestra 16 registros de 64-bits de uso general, de los cuales los


primeros 8 estn etiquetados (por razones histricas) RAX, RBX, RCX, RDX,
RBP, RSI, RDI, RSP. Los siguientes 8 son nombrados R8-R15. Al reemplazar la
R inicial con una E en los primeros 8 registros, es posible accesar a los 32 bits
inferiores (EAX para RAX). De manera similar, para RAX, RBX, RCX y RDX,
accesar a los 16 bits inferiores es posible removiendo la inicial R (AX para
RAX), y el byte inferior de estos cambiando la X por L (AL para AX), y el byte
superior de los 16 bits inferiores usando una H (AH para AX). Los nuevos
registros R8 a R15 pueden ser accesados de una manera similar asi: R8
(qword), R8D (dword inferior), R8W (la Word ms bajo), R8B (el byte ms bajo
estilo MASM, en estilo Intel sera R8L). Ntese que no hay R8H.

3.2 Herramientas

Ensambladores

Una bsqueda en internet revela que los ensambladores capaces de manejar


x64 son el NASM, una reescritura del NASM llamada YASM, el rpido FASM, y
el tradicional MASM. Incluso existe un IDE para ensamblador gratuito para x86
y x64 llamado WinASM. Cada ensamblador tiene soporte variado para las
macros y la sintaxis de los otros ensambladores, pero el cdigo ensamblador
no es compatible de origen a travs de ensambladores tal como lo hacen el C+
+ y el Java.

Compiladores de C/C++

Estos compiladores seguido permiten empotrar ensamblador en el cdigo


usando ensamblado en lnea, pero Microsoft Visual Studio C/C++ removi esto
para el cdigo x64, probablemente para simplificar la tarea del optimizador de
cdigo. Esto deja 2 opciones: usar archivos de ensamblador por separado y un
ensamblador externo, o usar caractersticas intrnsecas del archivo de
encabezado intrn.h. Otros compiladores ofrecen opciones similares.

Algunas razones para usar caractersticas intrnsecas:

Ensamblador por lnea no est soportado en x64

Facilidad de uso: puedes usar nombres de variables en lugar de hacer


malabares con la asignacin de registros de manera manual.

Mayor multiplataforma que el ensamblador: El fabricante del compilador


puede portar las caractersticas intrnsecas haca varias arquitecturas.

El optimizador funciona mejor con estas caractersticas.

Anda mungkin juga menyukai