Ver Mensaje Individual
  #20 (permalink)  
Antiguo 26/10/2006, 08:42
Avatar de Eternal Idol
Eternal Idol
 
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años, 9 meses
Puntos: 74
Cita:
Iniciado por MaxExtreme Ver Mensaje
Si un compilador hace tal comprobación en cada paso, podemos ir mandándole al Hall of Shame.
Je, en realidad esta haciendo EXACTAMENTE lo que el codigo pide

Código:
#include <stdio.h>

void main()
{
	while(1)
	{
		printf("shame on you compiler!\r\n");
	};
}
cl shame.cpp (en negrita marcada la operacion redundante):
Código:
_main:
  00000000: 55                 push        ebp
  00000001: 8B EC              mov         ebp,esp
  00000003: B8 01 00 00 00     mov         eax,1
  00000008: 85 C0              test        eax,eax
  0000000A: 74 0F              je          0000001B
  0000000C: 68 00 00 00 00     push        offset $SG611
  00000011: E8 00 00 00 00     call        _printf
  00000016: 83 C4 04           add         esp,4
  00000019: EB E8              jmp         00000003
  0000001B: 5D                 pop         ebp
  0000001C: C3                 ret
cl shame.cpp /O1 (esta es la opcion por defecto en REALEASE desde el IDE):
Código:
_main:
  00000000: 68 00 00 00 00     push        offset ??_C@_0BJ@GJEKHHMF@shame?5on?5
you?5compiler?$CB?$AN?6?$AA@
  00000005: E8 00 00 00 00     call        _printf
  0000000A: 59                 pop         ecx
  0000000B: EB F3              jmp         _main
Ni siquiera contempla la posibilidad de retornar jamas

Código:
#include <stdio.h>

void main()
{
	for (;;)
	{
		printf("shame on you compiler!\r\n");
	};
}

cl shame.cpp:
Código:
_main:
  00000000: 55                 push        ebp
  00000001: 8B EC              mov         ebp,esp
  00000003: 68 00 00 00 00     push        offset $SG611
  00000008: E8 00 00 00 00     call        _printf
  0000000D: 83 C4 04           add         esp,4
  00000010: EB F1              jmp         00000003
cl shame.cpp /O1
Código:
_main:
  00000000: 68 00 00 00 00     push        offset ??_C@_0BJ@GJEKHHMF@shame?5on?5
you?5compiler?$CB?$AN?6?$AA@
  00000005: E8 00 00 00 00     call        _printf
  0000000A: 59                 pop         ecx
  0000000B: EB F3              jmp         _main
Como vemos el resultado final con optimizacion es exactamente el mismo
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO