martes, 29 de marzo de 2016

Ingeniería inversa para Los principiantes - CAPITULO 1

CAPITULO 1
A short introduction to the CPU - Una breve introducción a la CPU


La CPU es el dispositivo que ejecuta el código máquina de un programa consta de.
Un breve glosario:
 
Instrucción : Un comando CPU primitiva. Los ejemplos más simples son: mover datos entre los registros, que trabajan con memoria, las operaciones aritméticas primitivos. Como regla general, cada CPU tiene su propia arquitectura del conjunto de instrucciones (ISA).
 
Código máquina : El código que la CPU procesa directamente. Cada instrucción es generalmente codificada por varios bytes.
 
El lenguaje ensamblador: código mnemónico y algunas extensiones como macros que tiene la intención de hacer la vida de un programador más fácil.
 
registro de la CPU: Cada CPU tiene un conjunto fijo de registros de propósito general (GPR). 8 en x86, x86-64 en 16, 16 en ARM. La forma más fácil de entender un registro es pensar en ella como una variable temporal sin tipo. Imagínese si estuviera trabajando con un alto nivel PL 1 y sólo podía utilizar ocho variables de 32 bits (o 64 bits).Sin embargo, mucho se puede hacer usando sólo estos!
 
Uno podría preguntarse por qué es necesario que haya una diferencia entre el código máquina y una PL. La respuesta radica en el hecho de que los seres humanos y las CPU no son una como- es mucho más fácil para los seres humanos para utilizar un PL de alto nivel como C / C ++, Java, Python, etc., pero es más fácil para una CPU de usar un nivel mucho más bajo de abstracción.
Tal vez lo haría sea posible inventar una CPU que puede ejecutar código PL alto nivel, pero sería muchas veces más complejo que el CPU que sabemos de hoy. En una manera similar, es muy incómodo para los seres humanos que escriben en lenguaje ensamblador, debido a que es por lo bajo nivel y difícil de escribir en sin hacer un gran número de molestos errores.
El programa que convierte el código PL alto nivel en el conjunto es llamado un compilador.
 
1.1 A couple of words about different ISAs - Un par de palabras sobre diferentes ISAs
 
La ISA x86 siempre ha sido uno de los códigos de operación de longitud variable, por lo que cuando la era del 64 bits  vino, las extensiones x64 no afectaron la ISA de manera muy significativa. De hecho, la ISA x86 todavía contiene una gran cantidad de instrucciones que apareció por primera vez en la CPU de 16 bits 8086, sin embargo, todavía se encuentran en la CPU de hoy. 
 
ARM es una CPU RISC 2-diseñado con una longitud constante del código de operación ten en cuenta, que tenía algunas ventajas en el pasado. En el principio, todas las instrucciones ARM eran codificada en 4 bytes. Esto ahora se conoce como "modo ARM". 
 
Entonces pensaron que no era tan frugal como se había pensado inicialmente. De hecho, la mayor parte se usa instrucciones de la CPU en aplicaciones del mundo real se pueden codificar con menos información.
Por lo tanto, añaden otra ISA, llamado pulgar, donde cada instrucción se codifica en sólo 2 bytes. Esto ahora se conoce como "modo de pulgar". Sin embargo, no todas las instrucciones ARM pueden ser codificados en sólo 2 bytes, por lo que el conjunto de instrucciones del pulgar es algo limitada.
Vale la pena señalar que el código compilado para el modo de ARM y modo de pulgar puede coexistir, por supuesto, dentro de un mismo programa.
 
Los creadores de ARM Pulgar pensado podría ser ampliada, dando lugar a Pulgar-2 o "Thumb-2", que aparecido en ARMv7.Thumb-2 sigue utilizando las instrucciones de 2 bytes, pero tiene algunos de las nuevas instrucciones que tienen el tamaño de 4 bytes.Hay una idea errónea de que Thumb-2 es una mezcla de ARM y el pulgar. Esto es incorrecto. Más bien, Thumb-2 se extendió a apoyar plenamente todas las características del procesador por lo que podría competir con ARMmodo de un objetivo que se alcanzó con claridad, ya que la mayoría de las aplicaciones para el iPod / i-phone / iPad han sido compilados para el conjunto de instrucciones Thumb-2 (la verdad, debido en gran parte al hecho de que Xcode hace esto por defecto).Más tarde, el ARM de 64 bits salió.Esta NIA tiene códigos de operación de 4 bytes, y carecía de la necesidad de cualquier modo Thumb adicional.Sin embargo, los requisitos de 64 bits afectaron a la ISA, lo que resulta en nosotros ahora tiene tres juegos de instrucciones ARM: 
el modo de armado, de modo de Thumb(incluyendo Thumb-2) y ARM64.Estas ISA se cruzan parcialmente, pero se puede decir que son diferentes las NIA, en vez que las variaciones de la misma.Por lo tanto, nos gustaría probar para añadir fragmentos de código en los tres ISA ARM en este libro.
 
Hay muchas otras NIA RISC con una longitud de códigos de operación de 32 bits fijos, tales como MIPS, PowerPC y Alpha AXP.
 

No hay comentarios.:

Publicar un comentario