2011-08-04 16 views

Respuesta

11

En la convención de llamada thiscall utilizado por Visual C++ para x86, el puntero this se pasa en el Registro ecx. Esta instrucción lea copia el puntero this en el registro ecx antes de llamar a la función miembro.

Usted puede leer todo acerca de la instrucción lea en la cuestión de desbordamiento de pila "What's the purpose of the LEA instruction?"

+0

¿Hay una razón por la que no sólo se inserta en la pila así? –

+1

No lo sé. g ++ 'thiscall' simplemente empuja' this' en la pila después del último argumento. Si tuviera que adivinar, alguien probablemente realizó un análisis de rendimiento y decidió que el registro preventivo de 'this' arrojó un mejor rendimiento en casos de uso común. –

2

creo que es simplemente una forma optimizada de

mov ecx, ebp 
sub ecx, 24h 
Cuestiones relacionadas