Sistemski softver/Septembar 1 2025
Ispit u roku septembar 1 2025. godine održan je 21. septembra. Trajao je sat i po vremena i radio se na računarima.
1. zadatak
Postavka
Posmatra se proces asembliranja datog ivzornog asemblerskog koda za amd64 arhitekturu. Rezultat asembliranja je predmetni program po ELF formatu. Prikazati sadržaj (1) tabele simbola i (2) relokacionih zapisa strogo poštujući školski format i obavezno u skladu sa zadatom numeracijom simbola.
.intel_syntax noprefix
.extern a
.global f
.type f, @object
.equ f, b-c
.text
call a[+ip] # 0x00
e: mov rax, c # 0x06
jz e # 0x0e
jz c # 0x10
d: mov rax, [b - f] # 0x16
.long e # 0x1e
.data
.skip 0x6 # 0x00
c: .long b + 0xe # 0x06
b:
.end
Napomena: Heksadecimalni brojevi navedeni u komentaru izvornog asemblerskog koda predstavljaju pomeraj do početka instrukcije u tom redu gledano od početka sekcije kojoj instrukcija pripada. Takođe, usvojiti pretpostavku da je veličina operacionog koda:
- 2B za instrukciju
callza PC relativno adresiranje, - 4B za instrukciju
movza apsolutno adresiranje i - 2B ili 1B za instrukcije skoka za PC relativno adresiranje, u zavisnosti od širine operanda.
Rešenje
| Num | Value | Size | Type | Bind | Ndx | Name |
|---|---|---|---|---|---|---|
| 0: | 0 | 0 | NOTYP | LOC | UND | |
| 1: | 0 | 0 | SCTN | LOC | 1 | .text |
| 2: | 0 | 0 | SCTN | LOC | 2 | .data |
| 3: | 0 | 0 | SCTN | LOC | 3 | .bss |
| 4: | A | 0 | NOTYP | LOC | 2 | b |
| 5: | 6 | 0 | NOTYP | LOC | 2 | c |
| 6: | 6 | 0 | NOTYP | LOC | 1 | e |
| 7: | 16 | 0 | NOTYP | LOC | 1 | d |
| 8: | 4 | 0 | OBJ | GLOB | ABS | f |
| 9: | 0 | 0 | NOTYP | GLOB | UND | a |
| Offset | Type | Symbol | Addend |
|---|---|---|---|
| 2 | R_X86_64_PC32 | 9 | -4 |
| A | R_X86_64_32S | 2 | 6 |
| 12 | R_X86_64_PC32 | 2 | 2 |
| 1A | R_X86_64_32S | 2 | 6 |
| 1E | R_X86_64_32 | 1 | 6 |
| Offset | Type | Symbol | Addend |
|---|---|---|---|
| 6 | R_X86_64_32 | 2 | 18 |
2. zadatak
- Isti zadatak kao iz septembarskom 2022. godine.
3. zadatak
Potrebni je označiti da li su sledeće tvrdnje tačne ili ne.
- Prilikom rada JIT emulatora, svaki put kada se pozove
translateJITvrši se prevođenjeguestbloka počev od adrese zadate argumentom zaključno sa isključivo prvom sledećom instrukcijom skoka (utiče na kontrolu toka). NE - Moguće su optimizacije rada JIT emulatora, gde ne mora svaki prevedeni blok da sadrži prolog. DA
- Emulatori mogu vršiti optimizacije, gde se ne održava potpuna ekvivalentnost svake instrukcije koja se prevodi, ali se održava smisao programa. DA
- Emulator koji vrši statičko prevođenje izvornog koda daje gore vreme izvršavanja programa u odnosu na emulator koji vrši interpretaciju. NE
- Prilikom statičke rekompilacije, često se navodi instrukcija
test a1, a1da bi se postavile odgovarajuće vrednosti statusnih indikatora. DA
Napomene: Netačan odgovor na stavke prikazane padajućim menijem sa ponuđenim odgovorima se penalizuje sa -100% poena od te stavke. Da se određena stavka sa ponuđenim odgovorima ne bi bodovala, potrebno je odabrati odgovor ???.
4. zadatak
- Isti zadatak kao iz avgustovskog roka 2022. godine.