Salvarea conținutului registrului - comunicarea cu subprogramele

Pentru a evita apariția situației descrise, conținutul registrelor este stocat înaintea fiecărui apel. Acest lucru se poate realiza prin trimiterea de informații care ne interesează într-o zonă arbitrară de memorie, conținutul cărora nu se schimbă în timpul funcționării subrutinei. Imediat înainte de a efectua o întoarcere la programul principal, rutina efectuează restabilirea conținutului regiștrilor, adică scrierea informațiilor stocate în locațiile originale.







Astfel, lista cerințelor pentru subprograme trebuie completată cu încă două puncte. Este necesar să salvați conținutul registrelor. Controlul de întoarcere a programului principal trebuie să precede în mod necesar restabilirea conținutului registrelor. Deci, lista noastră arată acum:

S1: Salvarea registrelor.

53: Restaurare registru.

Înainte de a trece la analiza detaliată a pașilor S1 și S3, ne vom familiariza cu alte două echipe.

Comenzile LM și STM

După cum se poate vedea din descriere, operațiile sunt efectuate pe conținutul unui grup de registre care au numere între R1 și R3. De exemplu, la comandă

Salvarea conținutului registrului - comunicarea cu subprogramele

Fig. 13.3. Ilustrație a activității echipei STM.

Salvarea conținutului registrului - comunicarea cu subprogramele






Fig. 13.4. Recuperați conținutul registrului folosind comanda LM.

Ca rezultat, registrele vor fi încărcate cu informații din zona de memorie în care au fost stocate conținutul lor vechi. Procesul de restaurare este prezentat în Fig. 13.4.

Dacă numărul primului registru depășește numărul celui de-al doilea, adică R1 este mai mare decât R3, atunci numărarea registrelor merge mai întâi de la R1 la 15 și apoi de la 0 la R3. La comandă

încărcare Imaginea este produsă în registrul SA 14, cuvântul SA + 4 în registrul 15, SA + 8 in registrul 0, SA + 12 in registrul 1, SA + 2 în registrul 16 și, în final, SA + 20 într-un registru 3. Dacă, totuși, R1 = R3, atunci numai un registru este folosit ca operand. Cu alte cuvinte, rezultatul executării instrucțiunilor

Salvați zona

Potrivit acordului adoptat, conservarea conținutului registrului făcut din al patrulea conservare cuvânt. Conținutul registrului este stocat în memorie în ordinea următoare: 14, 15, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12. Registrul 13 are un rol deosebit în păstrarea conținutului registrelor, după cum vom vedea mai târziu, și, prin urmare, necesită un tratament special.

Salvarea conținutului registrului - comunicarea cu subprogramele

(vezi figura 13.5). Pentru a restabili registrele la sfârșitul executării subrutinelor, este suficient să le încărcați cu valori din zona de salvare:

Această comandă trebuie să precede imediat comanda de întoarcere la programul principal.

Rezumând tot ceea ce sa spus, oferim structura generală a unui subprogram arbitrar care să satisfacă cerințele de mai sus. Lăsați subrutina să fie numită SUBR. Structura sa generală este următoarea:

STM 14,12,12 (13) CONSERVAREA REGISTRELOR

LM 14,12,12 (13) RECUPERAREA REGISTRELOR

Rezervarea memoriei și constantele

Una dintre serviciile oferite de sistemul de operare; utilizator, este abilitatea de a lucra cu o bibliotecă macro, care conține un set de macro-uri foarte ușor de utilizat. Acest set include o astfel de macro, cum ar fi SAVE și RETURN. Pentru a păstra conținutul registrelor, este suficient să scrieți

În program, macro-ul va fi înlocuit cu comanda

Pentru a restabili conținutul registrelor și pentru a reveni la programul principal, trebuie să utilizați o altă macrocomandă:

Aceasta este echivalentă cu specificarea unei perechi de comenzi:

Utilizați o macrocomandă standard sau scrieți comenzi echivalente acestora, este o problemă de gust.







Articole similare

Trimiteți-le prietenilor: