Системски софтвер/Септембар 1 2025 — разлика између измена
(Напомене) |
|||
| (5 међуизмена истог корисника није приказано) | |||
| Ред 79: | Ред 79: | ||
|} | |} | ||
== 2. задатак == | |||
: ''Исти задатак као из [[Системски софтвер/Септембар_2022#2._задатак|септембарског 2022. године]].'' | |||
== 3. задатак == | |||
Потребни је означити да ли су следеће тврдње тачне или не. | |||
<div class="abc-list" data-solution="select" data-options="ДА,НЕ,???"> | |||
# Приликом рада ''JIT'' емулатора, сваки пут када се позове <code>translateJIT</code> врши се превођење <code>guest</code> блока почев од адресе задате аргументом закључно са искључиво првом следећом инструкцијом скока (утиче на контролу тока). <span class="spoiler">НЕ</span> | |||
# Могуће су оптимизације рада ''JIT'' емулатора, где не мора сваки преведени блок да садржи пролог. <span class="spoiler">ДА</span> | |||
# Емулатори могу вршити оптимизације, где се не одржава потпуна еквивалентност сваке инструкције која се преводи, али се одржава смисао програма. <span class="spoiler">ДА</span> | |||
# Емулатор који врши статичко превођење изворног кода даје горе време извршавања програма у односу на емулатор који врши интерпретацију. <span class="spoiler">НЕ</span> | |||
# Приликом статичке рекомпилације, често се наводи инструкција <code>test a1, a1</code> да би се поставиле одговарајуће вредности статусних индикатора. <span class="spoiler">ДА</span> | |||
</div> | |||
''Напомене:'' Нетачан одговор на ставке приказане падајућим менијем са понуђеним одговорима се пенализује са '''-100%''' поена од те ставке. Да се одређена ставка са понуђеним одговорима не би бодовала, потребно је одабрати одговор ???. | |||
== 4. задатак == | |||
: ''Исти задатак као из [[Системски софтвер/Август_2022#4._задатак|августовског рока 2022. године]].'' | |||
== Напомене == | |||
<references /> | |||
[[Категорија:Системски софтвер]] | [[Категорија:Системски софтвер]] | ||
[[Категорија:Рокови]] | [[Категорија:Рокови]] | ||
Тренутна верзија на датум 21. септембар 2025. у 17:09
Испит у року септембар 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. године.