Системски софтвер/Септембар 1 2025 — разлика између измена

Извор: SI Wiki
Пређи на навигацију Пређи на претрагу
(Нова страница: {{tocright}} '''Испит у року септембар 1 2025. године''' одржан је 21. септембра. Трајао је сат и по времена и радио се на рачунарима. == 1. задатак == === Поставка === Посматра се процес асемблирања датог ивзорног асемблерског кода за ''amd64'' архитектуру. Резултат асемблирања…)
 
(Напомене)
 
(7 међуизмена истог корисника није приказано)
Ред 13: Ред 13:


.text
.text
call a[+ip] # 0x00
call a[+ip]         # 0x00
e: mov rax, c # 0x06
e: mov rax, c       # 0x06
   jz e     # 0x0e
   jz e             # 0x0e
   jz c     # 0x10
   jz c             # 0x10
d: mov rax, [b - f] # 0x16
d: mov rax, [b - f] # 0x16
   .long e       # 0x1e
   .long e         # 0x1e


.data
.data
.skip 0x6 # 0x00
.skip 0x6           # 0x00
c: .long b + 0xe # 0x06
c: .long b + 0xe   # 0x06
b:
b:
.end
.end
Ред 32: Ред 32:


=== Решење ===
=== Решење ===
{| class="wikitable"
|+ <code>.symtab</code>
! 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
|}


{| class="wikitable"
|+ <code>.rela.text</code>
! 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
|}
{| class="wikitable"
|+ <code>.rela.data</code>
! Offset !! Type          !! Symbol    !! Addend
|-
| 6      || R_X86_64_32  || 2        || 18
|}
== 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 релативно адресирање, у зависности од ширине операнда.

Решење

.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. године.

Напомене