This shows you the differences between two versions of the page.
sde2:teme:tema_fr_3_rust [2022/04/25 22:45] alexandru.radovici |
sde2:teme:tema_fr_3_rust [2023/05/14 20:30] (current) alexandru.radovici |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Tema 3 Rusty Loader ====== | + | ====== Tema 4 Rustyloader ====== |
===== Informatii ===== | ===== Informatii ===== | ||
<note important> | <note important> | ||
- | Date limite: ** Le 10 mai, 23h59 ** \\ | + | Date limite: ** Le 30 mai, 23h59 ** \\ |
Note: ** 2 points ** de la note \\ | Note: ** 2 points ** de la note \\ | ||
- | Lien: [[https://classroom.github.com/a/NenM8B_7|Devoir 3]] \\ | + | Lien: [[https://classroom.github.com/a/5CBIdgHi|Devoir 4]] \\ |
Télécharger en retard: **2 points / jour** (maximum 4 jours)\\ | Télécharger en retard: **2 points / jour** (maximum 4 jours)\\ | ||
</note> | </note> | ||
Line 35: | Line 35: | ||
* Își va inițializa structurile interne. | * Își va inițializa structurile interne. | ||
+ | * Va afisa pe stderr (2) lista de segmente ale fisierului executabil | ||
+ | * Va afisa pe stderr (2) //base address// pentru fisierul executabil (adresa de memorie minima la care se incarca segmente) | ||
+ | * Va afisa pe stderr (2) //entry point address// | ||
* Va parsa fișierul binar - pentru a face asta aveți la dispozitie biblioteca [[https://docs.rs/object/latest/object/|object]]. | * Va parsa fișierul binar - pentru a face asta aveți la dispozitie biblioteca [[https://docs.rs/object/latest/object/|object]]. | ||
* Va rula prima instrucțiune a executabilului (//entry point-ul//). | * Va rula prima instrucțiune a executabilului (//entry point-ul//). | ||
Line 45: | Line 48: | ||
* Pagina trebuie mapată **fix** la adresa indicată în cadrul segmentului. | * Pagina trebuie mapată **fix** la adresa indicată în cadrul segmentului. | ||
+ | |||
+ | ==== Formatul afisarii ==== | ||
+ | <code> | ||
+ | Segments | ||
+ | # address size offset length flags | ||
+ | 0 0x8048000 1012 0x0 1012 r-x | ||
+ | 1 0x804a000 8192 0x1000 8192 rw- | ||
+ | Entry point 8048120 | ||
+ | Base address 8048000 | ||
+ | </code> | ||
+ | |||
+ | <note> | ||
+ | Alinierea campurilor se face cu TAB (\t). Daca alinierea nu este buna, adaugati doua caratere TAB. | ||
+ | </note> | ||
===== Biblioteca object ===== | ===== Biblioteca object ===== |