WARNING:
JavaScript is turned OFF. None of the links on this concept map will
work until it is reactivated.
If you need help turning JavaScript On, click here.
Este Cmap, tiene información relacionada con: introduccion isa II, • Ciertas instrucciones utilizan valores constantes • Ejemplo: Establecer el contenido del registro RAX con el valor 1234: mov $1234, %rax • Disponibles en la propia codificación de la instrucción, no en el segmento de datos ni en ningún registro La instrucción en ensamblador sub $0x10,%rsp en lenguaje máquina: 48 83 ec 10 además • Existen otros registros para cálculos en punto flotante y vectoriales – Hasta 512 bits por registro, • Ciertas instrucciones utilizan valores constantes • Ejemplo: Establecer el contenido del registro RAX con el valor 1234: mov $1234, %rax • Disponibles en la propia codificación de la instrucción, no en el segmento de datos ni en ningún registro La instrucción en ensamblador sub $0x10,%rsp en lenguaje máquina: 48 83 ec 10 además • Nombres alternativos para operar con menos de 64 bits (32, 16 u 8) – RAX=64 bits, EAX = 32 bits inferiores de RAX, AX = 16 bits inferiores de EAX.. – Ídem para el resto de registros, Direcciones de memoria en x86-64 destaca • ¿Cómo se sabe si una secuencia de 0's y 1's que hay en memoria representa un carácter, un entero, un real en punto flotante, etc.? – El compilador sabe el tipo de dato almacenado en cada dirección de memoria – Dependiendo del tipo de dato, genera unas instrucciones u otras para manejar dichos datos, Direcciones de memoria en x86-64 destaca • ¡Ojo! No confundir dirección de memoria de una celda (posición ocupa en la “tabla”) y su contenido (valor que tiene en cada momento), Direcciones de memoria en x86-64 destaca • El ISA x86-64 define direcciones virtuales de 64 bits – Al final de este tema veremos la diferencia entre direcciones virtuales y direcciones físicas, Operandos de las instrucciones x86-64 se divide en 3 REGISTROS, Operandos de las instrucciones x86-64 se divide en 3 MEMORIA, Direcciones de memoria en x86-64 destaca • Tamaño máximo teórico de la memoria: 264 = 4 Exabytes – Los procesadores actuales que implementan x86-64 usan direcciones de 48 bits (256 TB): El hardware ignora los 16 bits de más peso de cada dirección (por ahora). (¿Por qué?), CONSTANTES (operandos inmediatos) DESTACA • Ciertas instrucciones utilizan valores constantes • Ejemplo: Establecer el contenido del registro RAX con el valor 1234: mov $1234, %rax • Disponibles en la propia codificación de la instrucción, no en el segmento de datos ni en ningún registro La instrucción en ensamblador sub $0x10,%rsp en lenguaje máquina: 48 83 ec 10, • Ciertas instrucciones utilizan valores constantes • Ejemplo: Establecer el contenido del registro RAX con el valor 1234: mov $1234, %rax • Disponibles en la propia codificación de la instrucción, no en el segmento de datos ni en ningún registro La instrucción en ensamblador sub $0x10,%rsp en lenguaje máquina: 48 83 ec 10 además • Los registros enteros son de 64 bits – Puntero de instrucción: RIP (indica por dónde va ejecutándose el programa) – Uso general: RAX, RBX, RCX, RDX, R8-R15 – Índices (útiles para acceder a posiciones de un array, p.e): RSI, RDI – Manejo de la pila: RSP (puntero de pila), RBP (puntero base de pila) – Registro de estado (flags): RFLAGS (contiene información sobre el estado del procesador y el resultado de la ejecución de las instrucciones; afecta a los saltos condicionales), Operandos de las instrucciones x86-64 se divide en 3 CONSTANTES (operandos inmediatos), Introducción al ISA Intel x86-64 II destacamos Operandos de las instrucciones x86-64, MEMORIA DESTACA • Tabla formada por celdas, cada una de tamaño 1 byte • Cada celda tiene asociada una dirección de memoria – Un número que se usa para referirse a dicha celda para leer/escribir su contenido • Acceso más lento que a los registros (fuera de la CPU) • Etiquetas: representaciones simbólicas de direcciones de memoria en lenguaje ensamblador – Segmento de datos: nombres variables globales (p.e. “array”), etc. – Segmento de código: nombres de procedimientos (p.e. “main”), destinos de saltos, etc., Introducción al ISA Intel x86-64 II destacamos Direcciones de memoria en x86-64, REGISTROS DESTACA • Contienen valores intermedios de nuestros cálculos • Son de acceso muy rápido, puesto que están en la propia CPU • Ejemplo: Copiar el valor de un registro a otro: mov %rax, %rsi