NOPs en código ASM compilado con TASM32

Iniciado por zhengxi, 9 Noviembre 2014, 19:54 PM

0 Miembros y 2 Visitantes están viendo este tema.

zhengxi

hola a todos.

pues resulta que cuando compilo un fuente ASM y me genera el EXE, luego cuando paso el EXE a un debugger, veo que el TASM32/TLINK32 entre algunas instrucciones me ha metido NOPs.

NOPs que yo no escribí en mi código ASM.

¿Con otros compiladores como MASM32 etcs os pasa esto mismo?

Dato: uso TASM32 (año 1996) / TLINK32 (año 1998). No tengo más modernos.




se me olvidaba: nunca usé MASM32 ni otros ensambladores.

Eternal Idol

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

zhengxi

Sí, sí.

si no digo que MASM32 sea de pago.

sólo pregunto si a alguien le ha pasado lo mismo con otros ensambladores que no sean TASM32: lo de que te llena tu código con NOPs en según qué partes de tu código, sin tú haberlos puesto en tu fuente ASM.

Eternal Idol

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón


karmany

Es extraño, a mí con MASM32 no me pasa.
Puedes poner unas líneas de tu código y ensamblado para ver dónde ha puesto los NOP's.

Es raro...

zhengxi

Gracias por vuestras respuestas.

Pues mirando por internet, acabo de dar con una solución, que no sé si servirá para todos los casos, pero sí para al menos el ejemplo que tenía.

resulta que hay que poner en el TASM32 el parámetro /mX donde X sería un número.
o sea por ejemplo: /m5 y así el TASM32 hace 5 pases a la hora de ensamblar el ASM.
y con esos 5 pases ya no salen luego los NOPs.  :o

o sea mirad:

yo tenía este código en el ASM, por ejemplo:

push eax
inc    eax
jz     salto
mov  ebx, 12h
salto:sub  ecx, ebx


pues el EXE me salía:

push eax
inc    eax
jz     salto
nop
nop
nop
nop
mov  ebx, 12h
salto:sub  ecx, ebx


y como os digo, poniendo ese parámetro /mX donde X es un número de pases, pues el TASM32 ahora ya no mete esos NOPs. Veremos a ver si es así para todos los casos o sólo para este.

gracias a todos por vuestras respuestas.

Eternal Idol

De nada, problemas de herramientas del milenio pasado.
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

_Enko

Pues mas que sufrir con tasm32 de BORKAKA te sugiero pasarte a masm32, fasm, nasm.  Cualquiera de esos tres tiene buena referencia :)

La unica cosa que se me ocurre en el que un ensamblador puede agregar NOPs de por si mismo, es cuando se utiliza alguna instruccion de preprocesador como ALIGN.

Saludos.