sublinia

Trebuie să adăugați numele numita procedură, caracterul de subliniere și sufixul @ n, unde n - numărul de octeți necesar pentru a transmite parametrii. În acest caz, n este egal cu 8. Această formă de denumire procedură întâlnește C + compilator pentru a funcționa corect. Cu aceste modificări textul original va apărea așa cum se arată în Listarea 3.15.
Listarea 3.15. Procedura în asamblare, ajustat pentru apelul în C ++,
.386
.modelul plat
_AddInts publice @ 8
.date
.cod
_AddInts @ 8 proc
împinge EBP
mov EBP, ESP
mov EAX, DWORD PTR [EBP + 8]
adaugă EAX, DWORD PTR [EBP + 12]
pop EBP
ret 8
_AddInts @ 8 endp
capăt
După cum se poate observa din textul original, singurul parametru care a trecut printr-o schimbare în comparație cu Delphi, - acesta este numele procedurii. Compilarea este aceeași ca și în versiunea anterioară. Pentru compilator TASM:
tasm32 / ml Addints.asm
sau pentru MASM:
ml / cu Addints.asm

Acum, să vedem cum arată codul care determină procedurile de asamblare de C + + .NET. În primul rând, ar trebui să descrie procedura numită în descrierile de variabile și funcții:
extern "?" int stdcaii Addints (int il, int i2);

Fragment programului, efectuați calcule folosind o procedura Addlnts externe ar putea arata astfel:
int II = 74;
int = 12 -56;
Ires int;
= Addlnts (IRES II, 12);

Calificativul „On“ interzice C ++ compilator pentru a decora numele identificatorul extern. Nume decorare (nume decor) - acesta este standardul de tehnologie compilator C ++, în care expansiunea se întâmplă cu simboluri suplimentare care transporta informații despre tipul fiecărui parametru. Directiva externă, la fel ca în cazul programului privind Delphi, indică faptul că identificatorul este o procedură externă. Înainte de a compila programul în C + + pentru a adăuga la dosar obiectul proiectului la procedura numit. Cel mai bun din toate, în cazul în care copiați un fișier obiect cu procedura în directorul de lucru al proiectului. Această observație este valabilă pentru ambele C + + NET, și Delphi 7.
Și încă o remarcă. Visual C ++ compilator pentru a lucra cu fișiere obiect în formatul COFF (Common Object File Format - un format de fișier obiect comun), spre deosebire de Delphi, care folosește fișierele OMF standard (modulul Format Object - format modulul obiect). Prin urmare, în procesul de construire a software-ului în C + + NET, este posibil să primiți un avertisment Linker:
Atenție: conversia în format obiect de la OMF la COFF

În principiu, nu este atât de important, deoarece compilator C ++ convertește OMF-fișier în COFF oricum. TASM compilator, din păcate, nu permite formatul de fișier COFF, iar pentru MASM, puteți seta o opțiune / colt“.
ml / cu / cafeinate Addlnts.asm

articole similare