elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: [AIO elhacker.NET 2015] Compilación herramientas análisis y desinfección malware


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  ASM (Moderador: Eternal Idol)
| | | |-+  Diferencias resultado ensambladores (no, no es la pregunta clásica VS)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Diferencias resultado ensambladores (no, no es la pregunta clásica VS)  (Leído 2,280 veces)
farresito
Usuario

Desconectado Desconectado

Mensajes: 302



Ver Perfil
Diferencias resultado ensambladores (no, no es la pregunta clásica VS)
« en: 14 Diciembre 2010, 23:45 »

Holas a todos,

Llevo unos días pensando en una cosilla que me tiene hasta ahí. La cosa es que por internet hay muchos VS entre tal ensamblador o tal otro. Si bien he leído mucho acerca de ello, mi pregunta es más concreta.

Cuando se ensambla con un ensamblador u otro ¿hay diferencia alguna entre el resultado de cada uno? Es decir, el resultado en binario será el mismo en todo los ensambladores o habrá alguno que difiera un poco.

¿Se puede 'optimizar' un ensamblador? Por ejemplo, supongamos que tenemos éste código, sacado de una web:
Código:
Game Port

;  GAMEPORT.ASM
;

        .MODEL TINY

        .DATA

        yes     DB      13,10,"Game port is installed.",13,10,"$"
        no      DB      13,10,"Game port is not installed.",13,10,"$"

        .CODE
        ORG 100h

start:  mov     al, 1           ;value to write to port
        mov     dx, 201h        ;port number
        out     dx, al          ;write to port
        mov     cx, 0F00h       ;# of loops

port_loop:
        in      al, dx          ;read from port
        and     al, 0Fh         ;if jstick present, then AL should be
        cmp     al, 0Fh         ; 0Fh after ANDing with 0Fh.
        je      jstick_exists
        loop    port_loop
        mov     dx, OFFSET no   ;gameport not installed
        jmp     SHORT done

jstick_exists:                 
        mov     dx, OFFSET yes  ;gameport installed

done:   mov     ah, 9h
        int     21h

        mov     ax, 4c00h
        int     21h

END     start

El resultado en binario será el mismo en cada ensamblador (usando, por supuesto, el mismo linker)?

Es este aspecto el que hace un ensamblador 'mejor' o 'peor' que otro o solo es los formatos que acepta, los macros... etc.

¡Un abrazo! Agradezco de antemano sus respuestas :)


En línea

Yurix

Desconectado Desconectado

Mensajes: 72


Paz para la guerra y guerra por la paz


Ver Perfil
Re: Diferencias resultado ensambladores (no, no es la pregunta clásica VS)
« Respuesta #1 en: 21 Diciembre 2010, 19:52 »


La respuesta parcial es SI , empezamos >

En el conjunto de instrucciones X86 hay instrucciones que se pueden codificar de varias maneras , incluso manteniendo el mismo tama;o. Se puede incluso identificar el ensamblador o compilador que se uso ,gracias a esto que te acabo de escribir.

Incluso hay un programa que incrusta informacion dentro de los opcodes sin modificar el funcionamiento.

Lee >
http://www.strchr.com/machine_code_redundancy
http://www.crazyboy.com/hydan/

Por ejemplo , un compilador o ensamblador (de calidad) puede usar una instruccion mas larga para que la proxima instruccion este alineada (con las respectivas ganancias en velocidad que esto puede traer si esa instruccion se encuentra dentro de un loop donde sera ejecutada varias veces)

ver alineamiento en >:
http://www.asmcommunity.net/book/Alignment


Saludos
Espero que te sea util.





En línea



http://kapetres.wordpress.com/ < Mi blog sobre ASM

Parece que alguien no quiere que la info sea liebre >

Alguien lo movio a ese lugar.
farresito
Usuario

Desconectado Desconectado

Mensajes: 302



Ver Perfil
Re: Diferencias resultado ensambladores (no, no es la pregunta clásica VS)
« Respuesta #2 en: 26 Diciembre 2010, 11:26 »

Muchisimas gracias por tu respuesta y por la buena explicacion :)

Todo entendido :)

¡Un abrazo!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
AYUDA SOBRE ENSAMBLADORES
Programación General
Rey_Lagarto 2 1,002 Último mensaje 30 Octubre 2004, 07:36
por Rey_Lagarto
Criptografía Clásica
Criptografía
Aberroncho 5 11,491 Último mensaje 28 Febrero 2008, 18:16
por arekkusu
Ensambladores
Programación General
Erik# 1 2,945 Último mensaje 11 Mayo 2009, 21:52
por Eternal Idol
[+]Ensambladores, Documentación, Herramientas
ASM
x64core 9 10,203 Último mensaje 17 Agosto 2017, 04:45
por wicd
[Pregunta]: ¿Como muestro el siguiente resultado?
Bases de Datos
MiguelCanellas 3 282 Último mensaje 19 Octubre 2019, 18:24
por MiguelCanellas
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines