Системски софтвер/Септембар 1 2025
Испит у року септембар 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 релативно адресирање, у зависности од ширине операнда.
Решење
| 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 |
| 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. задатак
- Исти задатак као из септембарског 2022. године.
3. задатак
Потребни је означити да ли су следеће тврдње тачне или не.
- Приликом рада JIT емулатора, сваки пут када се позове
translateJITврши се превођењеguestблока почев од адресе задате аргументом закључно са искључиво првом следећом инструкцијом скока (утиче на контролу тока). НЕ - Могуће су оптимизације рада JIT емулатора, где не мора сваки преведени блок да садржи пролог. ДА
- Емулатори могу вршити оптимизације, где се не одржава потпуна еквивалентност сваке инструкције која се преводи, али се одржава смисао програма. ДА
- Емулатор који врши статичко превођење изворног кода даје горе време извршавања програма у односу на емулатор који врши интерпретацију. НЕ
- Приликом статичке рекомпилације, често се наводи инструкција
test a1, a1да би се поставиле одговарајуће вредности статусних индикатора. ДА
Напомене: Нетачан одговор на ставке приказане падајућим менијем са понуђеним одговорима се пенализује са -100% поена од те ставке. Да се одређена ставка са понуђеним одговорима не би бодовала, потребно је одабрати одговор ???.
4. задатак
- Исти задатак као из августовског рока 2022. године.