Sistemski softver/Septembar 1 2025

Izvor: SI Wiki
< Системски софтвер
Datum izmene: 21. septembar 2025. u 16:51; autor: Aleksa (razgovor | doprinosi) (→‎2. задатак: грешка у куцању)
Pređi na navigaciju Pređi na pretragu

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 call za PC relativno adresiranje,
  • 4B za instrukciju mov za apsolutno adresiranje i
  • 2B ili 1B za instrukcije skoka za PC relativno adresiranje, u zavisnosti od širine operanda.

Rešenje

.symtab
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
.rela.text
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
.rela.data
Offset Type Symbol Addend
6 R_X86_64_32 2 18

2. zadatak

Isti zadatak kao iz septembarskog 2022. godine.

3. zadatak

Potrebni je označiti da li su sledeće tvrdnje tačne ili ne.

  1. Prilikom rada JIT emulatora, svaki put kada se pozove translateJIT vrši se prevođenje guest bloka počev od adrese zadate argumentom zaključno sa isključivo prvom sledećom instrukcijom skoka (utiče na kontrolu toka). NE
  2. Moguće su optimizacije rada JIT emulatora, gde ne mora svaki prevedeni blok da sadrži prolog. DA
  3. Emulatori mogu vršiti optimizacije, gde se ne održava potpuna ekvivalentnost svake instrukcije koja se prevodi, ali se održava smisao programa. DA
  4. 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
  5. Prilikom statičke rekompilacije, često se navodi instrukcija test a1, a1 da 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.