¿Cuáles son los nombres de los nuevos registros de procesadores X86 64?


¿Dónde puedo encontrar los nombres de los nuevos registros para ensamblar en esta arquitectura?

Me refiero a registros en X86 como EAX, ESP, EBX, etc. Pero me gustaría que en 64 bits.

No creo que sean lo mismo que cuando desmonte mi código C, obtengo r en lugar de e.

4 answers

Los viejos registros de 32 bits se han extendido a 64 bits, los registros r (rax, rbx, rsp y así sucesivamente).

Además, hay algunos registros de propósito general adicionales r8 a través de r15 a los que también se puede acceder como (por ejemplo) r8d, r8w y r8b (la palabra doble inferior de 32 bits, la palabra de 16 bits y el byte de 8 bits respectivamente).

El byte alto de los viejos registros de 16 bits todavía es accesible, bajo muchas circunstancias, como ah, bh, y así sucesivamente, pero esto parece no será el caso de los registros r8 a r15. Hay algunas nuevas codificaciones de instrucciones , específicamente aquellas que usan el prefijo REX, que no pueden acceder a esos bytes altos, pero otros aún son libres de usarlos.

Además, hay algunos nuevos registros SSE, xmm8 aunque xmm15.

Los registros eip y flags también se han ampliado a rip y rflags.

Ver la página de wikipedia y MSDN para más detalles.

Si estos son soportados en la palabra clave asm para un compilador de C en particular, no podría decir. La pequeña asamblea que hago (y se está convirtiendo en un día al año) se hace en asamblea en lugar de C.

 64
Author: paxdiablo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-12-29 09:54:01

La documentación de MSDN incluye información sobre los registros x64.

X64 extiende 8 de x64 de uso general se registra para ser de 64 bits, y añade 8 nuevos Registros de 64 bits. Los registros de 64 bits tienen nombres que comienzan con "r", por lo que para ejemplo la extensión de 64 bits de eax es llamado rax. Los nuevos registros son nombrado r8 a r15.

Los 32 bits, 16 bits y 8 bits inferiores de cada registro son directamente direccionable en operandos. Esto incluye registros, como esi, cuya baja 8 los bits no eran direccionables anteriormente. La siguiente tabla especifica la nombres de lenguaje ensamblador para la parte inferior porciones de registros de 64 bits.

64-bit register | Lower 32 bits | Lower 16 bits | Lower 8 bits
==============================================================
rax             | eax           | ax            | al
rbx             | ebx           | bx            | bl
rcx             | ecx           | cx            | cl
rdx             | edx           | dx            | dl
rsi             | esi           | si            | sil
rdi             | edi           | di            | dil
rbp             | ebp           | bp            | bpl
rsp             | esp           | sp            | spl
r8              | r8d           | r8w           | r8b
r9              | r9d           | r9w           | r9b
r10             | r10d          | r10w          | r10b
r11             | r11d          | r11w          | r11b
r12             | r12d          | r12w          | r12b
r13             | r13d          | r13w          | r13b
r14             | r14d          | r14w          | r14b
r15             | r15d          | r15w          | r15b
 86
Author: RRUZ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-02-04 23:29:05

X64 extiende los registros de propósito general de 32 bits de la siguiente manera:

EAX -> RAX
EBX -> RBX
ECX -> RCX
EDX -> RDX
ESI -> RSI
EDI -> RDI
ESP -> RSP
EBP -> RBP

X64 también agrega los siguientes registros de propósito general de 64 bits:

R8, R9, R10, R11, R12, R13, R14, R15

Además, SSE es parte de la especificación X64, por lo que los registros vectoriales xmm0-xmm15 también están disponibles

Puede encontrar información básica sobre la arquitectura en Wikipedia/X86-64 o visite el sitio web de Intel.

 8
Author: brainiac,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-10-19 10:00:34

Dónde puedo encontrar los nombres de los nuevos registros para ensamblar en esta arquitectura.

En el manual del procesador "Intel 64 and IA-32 Architectures Software Developer's Manual Volume 1: Basic Architecture", por ejemplo, versión 253665-053US :

  • buscar"registros"
  • la primera coincidencia es el índice "3.4 BASIC PROGRAM EXECUTION REGISTER"
  • dos elementos debajo de " 3.4.1.1 Registros de propósito General en 64 Bits Mode "

En esa sección:

Si se especifica un tamaño de operando de 64 bits: RAX, RBX, RCX, RDX, RDI, RSI, RBP, RSP, R8-R15 están disponibles. R8D-R 15D / R8-R15 representan ocho nuevos registros de propósito general.

Recordatorio: el modo de 64 bits es el modo "normal" en x86-64. El otro modo principal es "modo de compatibilidad" que emula IA32.

Si sigue buscando "register" en el índice, también encontrará secciones sobre" number crushing " registros para flotar punto y SIMD dispersos en el manual:

  • 8.1.2-x87 FPU Data Registers (STx)
  • 9.9.2-Registros MMX
  • 10.2.2-XMM Registros
  • 14.1.1-Soporte de registro SIMD Ancho de 256 bits (YMM)

Hay muchos más registros de control que tienen varios efectos secundarios y generalmente no se pueden escribir a menos que desee esos efectos (y a menudo requieren el anillo 0). Estos se resumen en " Volume 3 System Programming Guide - 2.1.6 Registros del Sistema", que es más para los desarrolladores de sistemas operativos.

Un buen enfoque empírico es ejecutar info all-registers en GDB: ¿Cómo imprimir valores de registro en gdb?

 4
Author: Ciro Santilli 新疆改造中心 六四事件 法轮功,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 11:33:26