Működés
Lehetőségünk van assembly nyelven írt kódot (eljárást) meghívni C/C++ kódon belül. Pl.:
A C++ kód, melyben egy addem nevű eljárást hívunk, mely az assembly kódon belül van megvalósítva:
// Addem Main Program (AddMain.cpp)
#include
using namespace std;
extern "C" int addem(int p1, int p2, int p3);
int main(){
int total = addem( 10, 15, 25 );
cout << "Total = " << total << endl;
return 0;
}
Az assembly kód, melyben egy összeadó eljárás van megvalósítva:
; The addem Subroutine (addem.asm)
; This subroutine links to Visual C++.
.386P
.model flat
public _addem
.code
_addem proc near
push ebp
mov ebp,esp
mov eax,[ebp+16] ; first argument
add eax,[ebp+12] ; second argument
add eax,[ebp+8] ; third argument
pop ebp
ret
_addem endp
end
Mikor a C++ kódból meghívjuk az eljárást, a bementi paraméterek bele kerülnek a verembe (plusz a visszatérési cím). Így az eljárás futásakor már benne vannak a veremben, csak megfelelő címzéssel el kell érni őket. A verem tartalma:
|
|