Испит у року септембар 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. задатак
Поставка
Решење
4. задатак
Поставка
Решење