Sistemski softver/K2 2022
Pređi na navigaciju
Pređi na pretragu
Drugi kolokvijum 2022. održan je 14. maja. Kolokvijum je trajao 90 minuta i radio se u vežbankama. Oba zadatka su vredela 10 poena.
1. zadatak
Dati kod na asembleru za amd64 prevodi se dvoprolaznim asemblerom. Rezultat prevođenja je predmeti program po ELF formatu. Prikazati sadržaj:
- tabele simbola
- relokacionih zapisa kao i
- sadržaj sekcija.
Koristiti školski format naveden u nastavku:
| Num | Value | Size | Type | Bind | Ndx | Name |
|---|
| Offset | Type | Symbol | Addend |
|---|
Pri rešavanju usvojiti sledeće (heksadecimalne vrednosti unutar zagrada nakon podatka o veličini instrukcije jesu prvi bajtovi instrukcije koji predstavljaju njen operacioni kod):
- Instrukcija
callkoristi PC relativno adresiranje. Veličina instrukcije je šest bajtova (0xff 0x15). - Instrukcija
movkoristi apsolutno adresiranje. Veličina instrukcije je osam bajtova (0x48 0x8b 0x04 0x25). - Instrukcija
jzkoristi PC relativno adresiranje. Veličina instrukcije je dva bajtova (0x74) ili šest bajtova (0x0f 0x84) zavisno od veličine pomeraja.
.intel_syntax noprefix
.extern a
.global f
.equ f, b-c
.text
call a[rip]
e: mov rax, c
jz e
jz c
d: mov rax, b - f
.long e
.data
.skip 6
c: .long b + 0xe
b:
.end
2. zadatak
Odrediti vrednost pri obradi od strane asemblera za hipotetičku mašinu (ukoliko vrednost nije poznata napisati znak pitanja) i indeks klasifikacije za svaki izraz u okviru izvornog asemblerskog koda datog u nastavku.
BEG
USE LAB1
ORG 0x64
SCT DAT
LAB2 DC LAB1
DC 7 + LAB2
SCT TXT
LAB3 LDA LAB2 - 1
ADX * - LAB3
OTI
HLT
END