Actualizarse a 64 bits

Este post es un extracto de:

Introduction to X86-64 Assembly for Compiler Writers por Prof. Douglas Thain

Registros y tipos de datos

Los procesadores  X86-64 tienen 16 registros entero de uso general

%rax %rbx %rcx %rdx %rsi %rdi %rbp %rsp %r8 %r9 %r10 %r11 %r12 %r13 %r14 %r15

Los programadores acostumbrados al modo de 32 bits, notarán que los primeros ocho extienden los registros de 16 bits anteriores.

%eax %ebx %ecx %edx %esi %edi %ebp %esp

Analicemos un poco más la estructura de los nuevos ocho registros, que siguen el siguiente esquema:

%r8l
8 bits
%r8w
16 bits
%r8d
32 bits
%r8
64 bits

Cuando convenga aclarar (yo casi siempre lo hago). Se utiliza el sufijo Q en los comandos de ensamblador. La siguiente tabla ilustra los modos de direccionamiento:

Modo Ejemplo
Símbolo global MOVQ x, %rax
Inmediato MOVQ $56, %rax
Registro MOVQ %rbx, %rax
Indirecto MOVQ (%rsp), %rax
Base-Relativo MOVQ -8(%rbp), %rax
Desplazado-Escalado-Base-Relativo MOVQ -16(%rbx,%rcx,8), %rax

Recordemos que no todas las combinaciones son permitidas.

Bienvenidos a mi blog en español para la competencia

¿Por qué organizo una competencia en lenguaje ensamblador?

Todos los meses Itch.io me invita a participar en sus competencias. Por fin, un día acepte ceder a una tentación que tuve durante varios años.

Buscaba algún tema que me gustara, algo parecido a una competencia en lenguaje ensamblador. Pero nunca ningún retador proponía tal idea. Bueno, al final se me ocurrió que yo podía organizarla…

¡Buena suerte a todos los participantes!