Differences

This shows you the differences between two versions of the page.

Link to this comparison view

iocla:laboratoare:laborator-09 [2021/11/11 22:35]
andrei.albisoru
iocla:laboratoare:laborator-09 [2022/05/06 15:02] (current)
radu.nichita
Line 142: Line 142:
 2. Dupa preambulul functiei, stiva arata in felul urmator: 2. Dupa preambulul functiei, stiva arata in felul urmator:
  
-{{https://​raw.githubusercontent.com/​systems-cs-pub-ro/​iocla/​master/​laborator/​content/​apel-functii/​images/​function_stack1.jpg?​width=850|function_stack1.jpg}}+{{https://​raw.githubusercontent.com/​systems-cs-pub-ro/​iocla/​master/​laborator/​content/​apel-functii/​images/​function_stack1.jpg?​width=650|function_stack1.jpg}}
  
 3. De observat că pe parcursul execuției funcției, ceea ce nu se schimbă este poziția frame pointer-ul. Acesta este și motivul denumirii sale: pointează la frame-ul curent al funcției. De aceea este comun ca accesarea parametrilor unei funcții să se realizeze prin intermediul frame pointer-ului. Presupunând un sistem pe 32 de biți și parametri de dimensiunea cuvântului procesorului (32 de biți, 4 octeți) vom avea: 3. De observat că pe parcursul execuției funcției, ceea ce nu se schimbă este poziția frame pointer-ul. Acesta este și motivul denumirii sale: pointează la frame-ul curent al funcției. De aceea este comun ca accesarea parametrilor unei funcții să se realizeze prin intermediul frame pointer-ului. Presupunând un sistem pe 32 de biți și parametri de dimensiunea cuvântului procesorului (32 de biți, 4 octeți) vom avea:
Line 165: Line 165:
    //De asemnea, in unele cazuri, se poate returna o adresa de memorie catre stiva/heap, sau alte zone de memorie, care refera obiectul dorit in urma apelului functiei.//    //De asemnea, in unele cazuri, se poate returna o adresa de memorie catre stiva/heap, sau alte zone de memorie, care refera obiectul dorit in urma apelului functiei.//
  
-5. O functie foloseste aceleasi registre hardware, asadar, la iesirea din functie valorile registrelor nu mai sunt aceleasi. Pentru a evita aceasta situatie, se pot salva unele/toate registrele pe stiva (mai multe in [[https://​github.com/​systems-cs-pub-ro/​iocla/​tree/​master/​laborator|Laboratorul 8]]).+5. O functie foloseste aceleasi registre hardware, asadar, la iesirea din functie valorile registrelor nu mai sunt aceleasi. Pentru a evita aceasta situatie, se pot salva unele/toate registrele pe stiva.
  
 <​note>​ Deoarece limbajele de asamblare ofera mai multe oportunitati,​ exista necesitatea de a avea conventii de apelare a functiilor in x86. Diferenta dintre acestea poate consta in ordinea parametrilor,​ modul cum parametrii sunt pasati functiei, ce registre trebuiesc conservate de apelat sau daca apelantul ori apelatul se ocupa de pregatirea stivei. Mai multe detalii puteti gasi [[https://​en.wikipedia.org/​wiki/​X86_calling_conventions|aici]] sau [[https://​levelup.gitconnected.com/​x86-calling-conventions-a34812afe097|aici]] daca wikipedia e prea mainstream pentru voi. </​note>​ <​note>​ Deoarece limbajele de asamblare ofera mai multe oportunitati,​ exista necesitatea de a avea conventii de apelare a functiilor in x86. Diferenta dintre acestea poate consta in ordinea parametrilor,​ modul cum parametrii sunt pasati functiei, ce registre trebuiesc conservate de apelat sau daca apelantul ori apelatul se ocupa de pregatirea stivei. Mai multe detalii puteti gasi [[https://​en.wikipedia.org/​wiki/​X86_calling_conventions|aici]] sau [[https://​levelup.gitconnected.com/​x86-calling-conventions-a34812afe097|aici]] daca wikipedia e prea mainstream pentru voi. </​note>​
Line 436: Line 436:
 ==== Bonus: rot13 ==== ==== Bonus: rot13 ====
  
-Realizați și folosiți o funcție care face translatarea [[http://www.decode.org/|rot13]] a unui șir.+Realizați și folosiți o funcție care face translatarea [[https://rot13.com/|rot13]] a unui șir.
  
 ==== Bonus: rot13++ ==== ==== Bonus: rot13++ ====
iocla/laboratoare/laborator-09.1636662925.txt.gz · Last modified: 2021/11/11 22:35 by andrei.albisoru
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0