Programación General > ASM (Ensamblador)
Traduccion De Codigo C A Ensamblador.
bob esponja:
es verdad si no hay codigo entre las llaves no genera nada.
Eternal Idol:
Y si solo hay codigo redundante tampoco genera nada :devil:
--- Código: Text --- void func(int algo){ if (algo == 1) { int x = 2; x++; x += 50 * 3; x -= 2; x *= 25; } else { int y = 2; y++; y += 50 * 3; y -= 2; y *= 25; }}
?func@@YAXH@Z (void __cdecl func(int)):
00000000: C3 ret
Instru:
Es de que los compiladores de ahora son mounstruos que estan de nuestro lado. Pero pueden ser nuestros peores enemigos cuando intentamos crearlos.
Otra pequeña duda.
Imaginemos que tienes una estructura.
Y en una funcion pasas como argumento por valor esa estructura. Que hay que hacer muchos pushs para meter toda la estructura al stack o sino como seria?.
struct mistruct{
int a;
long b[100][100];
.
.
};
struct mistruct *funcion(struct mistruct)
{
//hace algo con struct y la devuelve
}
Saludos
Eternal Idol:
No hace muchos push's sino que actua como un memcpy con rep movs va copiando byte a byte en la pila :smartass:
Todo esto lo podes probar muy facilmente con el VC++:
cl /c programa.cpp (con /c le decis que no enlace)
dumpbin /disasm programa.obj
Instru:
Bueno y otra duda medio rara sobre la traduccion de codigo.
No se si sea asi en las arquitecturs x86 pero en z80 no existen las instrucciones DB, DW, etc..para "declarar variables"
En primero lugar como se manejarian estas instrucciones? Y en si un int un char, etc como se manejarian?
Saludos
Navegación
[#] Página Siguiente
[*] Página Anterior
Ir a la versión completa