¿Cuál es el tamaño de cada instrucción asm? Cada instrucción toma cuántos bytes? 8 bytes? Cuatro para el código de operación y Cuatro para el argumento? ¿Qué sucede cuando tienes un opcode y 2 argumentos, en mov, por ejemplo? ¿Tienen un tamaño fijo en la memoria o varían? ¿Tiene EIP algo que ver con esto, su valor siempre se incrementa en uno, siendo totalmente independiente del tipo de instrucción que está pasando?¿Cuál es el tamaño de cada instrucción asm?
Pregunto esto cuando estaba leyendo http://en.wikibooks.org/wiki/X86_Disassembly/Functions_and_Stack_Frames, me encontré con el hecho de que parece que una instrucción de llamada es equivalente a una instrucción push y jmp.
call MYFUNCTION
mov my_var, eax
ser el mismo que
push [eip + 2];
jmp MYFUNCTION;
mov my_var, eax
Cuando estamos empujando [EIP + 2] en la pila, a qué valor estamos señalando a continuación? A la línea justo al lado de "jmp MYFUNCTION", mov my_var eax, ¿verdad?
ps: MSVC++ señala un error en la primera línea, ya que dice que eip no está definido. Funciona para eax, esp, ebp, etc. ¿Qué estoy haciendo mal?
Esta pregunta no tiene nada que ver con C++, por lo que se eliminó la etiqueta. –
Debe ser push eip + 2, no push [eip + 2]. –
"push eip" no funciona. –