Directive directe în turbo pascal 7

10.5. Directivele subprogramelor

Directivele furnizează traducătorului informații suplimentare despre plasarea subrutinelor.

10.5.1. FORWARD directivă

Dacă o subrutină folosește alta și care, la rândul ei, aceasta este prima, atunci există problema introducerii acestor rutine în program (nici una din ele nu poate fi plasată în fața celeilalte). Pentru a elimina această contradicție. Este utilizată directiva înainte, ceea ce face posibilă împărțirea uneia dintre subrutine în două părți.







Atunci când se utilizează directiva înainte, primul titlu al primei subrutine este scris pentru prima dată. Organismul acestei subrutine se înlocuiește cu directiva înainte. Apoi, a doua subrutină este descrisă pe deplin, iar după aceea este descris pe deplin primul subrutină. În acest caz, puteți scrie un antet subprogram scurtat, care include procedura sau funcția de cuvânt și numele acestuia. Lista de parametri formali și tipul de subrutine (dacă este o funcție de subprogram) nu este specificată.

Un exemplu. Procedura First solicită procedura În al doilea rând, și că, la rândul său, procedura Prima.

procedură Primul (A, B: Integer); transmite;

Directiva directă poate fi folosită și pur și simplu pentru o plasare mai convenabilă a subprogramelor: mai întâi descriu toate anteturile și apoi - subrutinele în sine. Această directivă nu ar trebui folosită în module (vezi subcapitolul 16) pentru rutinele declarate în interfața modulului.

10.5.2. Orientările FAR și NEAR

10.5.3. Directiva EXTERNĂ

Directiva externă permite utilizarea subrutinelor scrise în limba de asamblare și compilate separat. Aceste subrutine trebuie să fie legate de programul principal folosind cheia. Aici numele fișierului este numele acelui fișier (cu extensia .OBJ), în care sunt modulele de obiecte compilate ale subrutinelor scrise în limba de asamblare.







funcție Max (X, Y: Real): real; externă;
procedură Căutare (var Mas; N: Integer;
var Max, Min: Integer); externă;

Directiva externă ar trebui utilizată dacă rutinele de asamblare sunt mari și compilate separat, mai degrabă decât folosind asamblarea încorporată sau scriind-le în coduri de procesor folosind directiva inline (a se vedea 10.5.5).

10.5.4. Directiva ASSEMBLER

Directiva de asamblare vă permite să scrieți o subrutină în întregime în limba de asamblare. În același timp, în timpul compilării, subrutina va fi compilată automat de către asamblatorul încorporat al pachetului Turbo Pascal. Când depanați o astfel de subrutină, puteți utiliza pachetul de depanare încorporat.

Un exemplu. O funcție care determină maximum două numere.

funcție MaxTwo (X, Y: Integer): Integer; de asamblare;
asm
MOV AX. X
CMP AX. Y
JG1
MOV AX. Y
@ 1:
se încheie;

10.5.5. Directiva INLINE

Directiva vă permite să includeți în textul comenzilor programate direct în codurile mașinii. Spre deosebire de alte subrutine, o subrutină cu o directivă inline este adăugată direct peste tot unde există un apel (de fapt, este o definiție macro). Astfel de subrutine pot avea parametri care pot fi utilizați în textul subrutinei, obținându-i din stivă.

Codurile mașinilor din procedură sunt scrise în octeți paranteză prin slash-ul direct (/).

Un exemplu. O funcție care calculează maximum două numere.

10.5.6. Directiva INTERRUPT

Directiva de întrerupere este destinată procedurilor care gestionează întreruperile. Aceste proceduri au un titlu standard:

procedura IntHandler (Flags, CS, IP, AX,
BX, CX, DX, SI, DI, DS, ES, BP: Word); întrerupe;
începe
.
se încheie;

În header, parametrii individuali pot fi omiteți (dar numai de la începutul listei), parametrii intermediari nu pot fi șterși, de exemplu:

procedura IntHandler (DI, ES, BP: Word); întrerupe;

procedura IntHandler (DI, DS, ES, BP: Word); întrerupe;

Nu puteți scrie alți parametri în antetul rutinei de procesare a întreruperilor.







Trimiteți-le prietenilor: