aláhúz

Meg kell adnia a nevét a hívott eljárás, aláhúzás és a toldalék @ n, ahol n - a szükséges bájtok számát továbbítja paramétereket. Ebben az esetben n értéke 8. Ez a forma elnevezési eljárás megfelel a C + fordító a megfelelő működéshez. Ezekkel a változtatásokkal, az eredeti szöveg jelenik meg listán látható 3.15.
Listing 3.15. Eljárás szerelés, korrigálva a hívás C ++,
.386
.modell lapos
nyilvános _AddInts R8
.adat
.kód
_AddInts @ 8 proc
nyomja EBP
mov EBP, ESP
mov EAX, DWORD PTR [EBP + 8]
add EAX, DWORD PTR [EBP + 12]
pop EBP
ret 8
_AddInts @ 8 endp
vég
Amint látható, az eredeti szöveg, az egyetlen paraméter, amely olyan változásokon ment keresztül képest Delphi, - ez a neve az eljárás. A fordítás ugyanaz, mint az előző változat. Mert TASM fordító:
tasm32 / ml Addints.asm
vagy MASM:
ml / a Addints.asm

Most lássuk, hogyan néz ki a kódot, ami miatt a szerelő eljárásainak C + + NET. Először is, le kell írnia a hívott eljárás leírását változók és funkciók:
extern "?" int stdcaii Addints (int IL, int i2);

Töredéke a program végre számítások egy külső Addlnts eljárást a következőképpen nézhet ki:
int II = 74;
int = 12 -56;
int IRES;
IRES = Addlnts (II, 12);

A minősítő „On” megtiltja a C ++ fordító díszíteni a nevét a külső azonosítóját. Díszítő neve (név dekoráció) - ez a szokásos fordítási technológia C ++, ahol az expanzió történik további szimbólumok információt hordoznak típusú egyes paraméterek. extern irányelv abban az esetben a program a Delphi, azt jelzi, hogy az azonosító egy külső eljárást. Mielőtt lefordítani a programot a C + + hozzá a projekt célja fájlt a hívott eljárás. A legjobb az egészben, ha másolja objektumfájl eljárásnak a munka könyvtárba a projekt. Ez a megjegyzés vonatkozik mind a C + + NET, és Delphi 7.
És még egy megjegyzés. Visual C ++ fordító dolgozni objektum fájlok formátuma COFF (Common Object File Format - közös tárgy fájlformátum), szemben a Delphi, amely az OMF fájlokat normál (Object Module Format - tárgy modul formátum). Ezért a folyamat az épület a szoftver a C + + NET, akkor kaphat egy figyelmeztetés Linker:
Figyelmeztetés: konvertáló objektum formátumot OMF hogy COFF

Elvileg ez nem olyan fontos, mert a C ++ fordító alakítja OMF-fájlt COFF egyébként. TASM fordító, sajnos, nem teszi lehetővé a COFF formátumot, és a MASM, akkor meg egy beállítást / colt”.
ml / a / coff Addlnts.asm

Kapcsolódó cikkek