2017-07-22 1 views
-1

Est-il possible de créer un pointeur sur une procédure dans l'assemblage, par exemple comment créer un pointeur sur une fonction dans C?masm x86 L'assemblage est-il possible de créer un pointeur vers une procédure?

void(*MyFuncPointer)(int a, int b);

Je suppose qu'il est possible, je ne sais pas comment le faire.

+3

Vous utilisez simplement l'étiquette (nom) de la fonction et la stockez où vous voulez. 'masm' peut nécessiter le mot clé' offset', comme pour toute variable normale. – Jester

Répondre

1

Si vous voulez obtenir l'adresse d'une procédure, ou n'importe quoi, vous pouvez utiliser l'instruction d'adresse effective de chargement.

lea eax, CrazyProcedure 
mov ebx, eax 

CrazyProcedure: 
    pop eax 
    pop ebx 
    add eax, ebx 
    ret 
+1

Vous pouvez également utiliser 'mov eax, offset CrazyProcedure'. – fuz