Underc0de

Programación General => ASM => Mensaje iniciado por: Yuki en Junio 21, 2017, 01:39:05 AM

Título: [UnderTIP] ¿Como aprender a programar en ensamblador de manera mas fácil?
Publicado por: Yuki en Junio 21, 2017, 01:39:05 AM
(http://2.bp.blogspot.com/-ndCWWoyD3Ao/T_tq-QCv47I/AAAAAAAAABg/aMlc70w8xBc/s1600/lenguajeensamblador.JPG)
Antes de iniciar, me gustaría informar que en este post no se va a enseñar literalmente como programar en ensamblador sino que serán algunos consejos para aprender a escribir en lenguaje ensamblador sin problemas.

¿Que es ensamblador?
Ensamblador es básicamente el lenguaje más cercano al lenguaje maquina, utilizado por desarrolladores avanzados para escribir aplicaciones con alto nivel de rendimiento.

¿Como puedo aprender a programar en ensamblador de manera más fácil?
Pues esto es muy simple y la mejor manera de hacerlo es comprender que ensamblador consta de unos cuantos items.


Etiquetas
Las etiquetas son identificadores (nombres, alias, apodos, etc) que se les asigna a una porción de nuestro código (aveces a todo) de tal manera que nosotros podamos (valga la redundancia) identificar nuestro código ensamblador.

Estas etiquetas son muy utilizadas con instrucciones de salto.

Registros
Los registros son secciones internas de almacenamiento, si usted a programado en Cramel (http://cramel.org) puede interpretar los registros como variables de tipo Entero (4 Bytes - x32 | 8 Bytes - x64).

Cualquier lenguaje de programación basado en la sintaxis de los procesadores Intel de 32 bits posee 9 registros.

Usted puede utilizar estos registros para su propósito original o preservarlos en la pila para usarlos como desee.

Instrucciones
A diferencia de las instrucciones de lenguajes de alto nivel, las instrucciones de ensamblador solo realizan su única tarea asignada, por ejemplo, si quisiéramos declarar una sentencia "If/Si" tendríamos que primero escribir la instrucción para comparar y después la instrucción para saltar "en caso de".

Para su mejor memorización se pueden buscar por internet la descripción extendidas de los mnemónicos, por ejemplo:


[Ultimo] Optimización
Las instrucciones ensamblador son representadas por el compilador a sus correspondientes opcodes, pero hay maneras de minimizar y por lo tanto aumentar la velocidad de ejecución de nuestro código ensamblador.

Supongamos que queremos limpiar el registro EAX, estableciéndolo a cero, la manera mas común seria hacer lo siguiente:

Código (asm) [Seleccionar]
mov eax,0 ; B8 00 00 00 00 | 6 Bytes.

Pero la manera más optima de realizar esta misma tarea es utilizando XOR.

Código (asm) [Seleccionar]
xor eax,eax ; 33 C0 | 2 Bytes.

O si quisieramos realizar una comparación en un registro, lo mas normal es:

Código (asm) [Seleccionar]
cmp eax,1 ; 83 F8 01 | 3 Bytes.

Aunque más eficiente es:

Código (asm) [Seleccionar]
test eax,eax ; 85 C0 | 2 Bytes.

Únete a los grupos de Underc0de!


Para ver la infografia visita Tips informáticos (https://blog.underc0de.org/tips-informaticos/)! - [Caído]

Saludos!