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: introducción al isa III, Introducción al ISA Intel x86-64 III destaca Repertorio de instrucciones x86-64, Instrucciones aritmético lógicas destaca • Sirven para hacer operaciones aritméticas (suma, resta, multiplicación, etc.) y/o lógicas (and, or, xor, manipulación de bits, etc.) con los operandos. • Ejemplo: Suma de un registro sobre otro: add %rbx, %rax # Suma RBX a RAX, y deja el resultado en RAX • También pueden operar con constantes (siempre precedidas por $): sub $1234, %rax # Resta 1234 a RAX, y deja el resultado en RAX • Incrementos y decrementos: inc, dec inc %rax # Incrementa en uno RAX • Desplazamiento de bits: shl $2, %rax # Desplaza RAX dos bits a la izquierda, Variantes de instrucciones para 8, 16, 32 y 64 bits ES En realidad, hay mnemónicos (abreviatura con la que se hace referencia a cada instrucción) diferentes para distintos tamaños de datos (q=quad=64 bits; l=long=32 bits; w=word=16 bits; b=byte=8 bits), pero el lenguaje ensamblador permite el uso de un mnemónico más general., Repertorio de instrucciones x86-64 tipos de instrucciones Soporte para procedimientos, Instrucciones de movimiento de datos destaca • Sirven para mover/copiar datos y/o constantes entre memoria y/o registros: mov %rbx, %rax # RAX := RBX mov $1234, %rax # RAX := 1234, Instrucciones de movimiento de datos destaca • Operandos de memoria: mov myvar, %rax # RAX := variable "myvar" (variable global, en seg. datos) mov (%rbx), %rax # RAX := Mem[RBX] (contenido de la dirección de memoria # “apuntada” por RBX, nótense los paréntesis) mov -4(%rbp), %rax # RAX := variable local en la pila (contenido de la # dirección apuntada por RBP menos 4 posiciones), Repertorio de instrucciones x86-64 tipos de instrucciones Saltos condicionales, Repertorio de instrucciones x86-64 tipos de instrucciones Variantes de instrucciones para 8, 16, 32 y 64 bits, Repertorio de instrucciones x86-64 tipos de instrucciones Instrucciones aritmético lógicas, Repertorio de instrucciones x86-64 tipos de instrucciones Otras instrucciones • Existen otros muchos tipos de instrucciones menos habituales, en los que no entraremos en detalle aquí: – Punto flotante – Llamada a interrupciones – Entrada/salida – Modo protegido, Saltos incondicionales destaca • Rompen el flujo secuencial de ejecución del programa (una instrucción tras otra) • Establecen el registro contador de programa (RIP en x86-64) a una dirección de código fija, indicada por una etiqueta (hacia atrás o adelante en el programa). • El programa sigue ejecutándose a partir de la instrucción destino del salto, Repertorio de instrucciones x86-64 tipos de instrucciones Instrucciones de movimiento de datos, Saltos condicionales destaca • Sólo saltan a la etiqueta si se cumple una determinada condición: je (si igual), jne (si no igual), jg (si mayor), jge (si mayor o igual) • Traducción de bucles (for, while, ...) y condiciones (if, switch, ...) de los lenguajes de alto nivel como C. • La condición se comprueba en una instrucción cmp anterior que modifica el registro de flags (RFLAGS), y que los saltos condicionales leen, Repertorio de instrucciones x86-64 tipos de instrucciones Saltos incondicionales