Системски софтвер/Септембар 1 2025

Извор: SI Wiki
Пређи на навигацију Пређи на претрагу

Испит у року септембар 1 2025. године одржан је 21. септембра. Трајао је сат и по времена и радио се на рачунарима.

1. задатак

Поставка

Посматра се процес асемблирања датог ивзорног асемблерског кода за amd64 архитектуру. Резултат асемблирања је предметни програм по ELF формату. Приказати садржај (1) табеле симбола и (2) релокационих записа строго поштујући школски формат и обавезно у складу са задатом нумерацијом симбола.

.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

Напомена: Хексадецимални бројеви наведени у коментару изворног асемблерског кода представљају померај до почетка инструкције у том реду гледано од почетка секције којој инструкција припада. Такође, усвојити претпоставку да је величина операционог кода:

  • 2B за инструкцију call за PC релативно адресирање,
  • 4B за инструкцију mov за апсолутно адресирање и
  • 2B или 1B за инструкције скока за PC релативно адресирање, у зависности од ширине операнда.

Решење

.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: А 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. задатак

Исти задатак као из септембарског 2022. године.

3. задатак

Потребни је означити да ли су следеће тврдње тачне или не.

  1. Приликом рада JIT емулатора, сваки пут када се позове translateJIT врши се превођење guest блока почев од адресе задате аргументом закључно са искључиво првом следећом инструкцијом скока (утиче на контролу тока). НЕ
  2. Могуће су оптимизације рада JIT емулатора, где не мора сваки преведени блок да садржи пролог. ДА
  3. Емулатори могу вршити оптимизације, где се не одржава потпуна еквивалентност сваке инструкције која се преводи, али се одржава смисао програма. ДА
  4. Емулатор који врши статичко превођење изворног кода даје горе време извршавања програма у односу на емулатор који врши интерпретацију. НЕ
  5. Приликом статичке рекомпилације, често се наводи инструкција test a1, a1 да би се поставиле одговарајуће вредности статусних индикатора. ДА

Напомене: Нетачан одговор на ставке приказане падајућим менијем са понуђеним одговорима се пенализује са -100% поена од те ставке. Да се одређена ставка са понуђеним одговорима не би бодовала, потребно је одабрати одговор ???.

4. задатак

Исти задатак као из августовског рока 2022. године.

Напомене