Priprema koda "za učitavanje u ROM" i "izvođenje iz RAM-a"
Promijeniti skriptu za povezivanje
ldscript.ld te dodati datoteku premjesti.c u direktorij boot tako da se sav sustav pripremi za učitavanje na adresu ROM=0x100000 (kao i sada), ali da ispravno radi tek kad se:
- podaci iz odjeljaka
.data*premjeste na adresuADDR_DATA(postaviti ju uconfig.inina npr.0x200000) - podaci iz odjeljaka
.bss*premjeste odmah iza.data* - stog postavi tako da mu je vrh na adresi
0x800000(vrh=kraj, početak postaviti na manju adresu:0x800000 - STACK_SIZE) - dodati polja
p1[P1SIZE]ip2[P2SIZE]i postaviti ih na adreseP1ADDRiP2ADDR- sve konstante definirati u
config.ini - način ostvarenja polje je proizvoljan - može i samo kroz skriptu, ili i kroz kod
- dodati kod u neki program koji popunjava zadana polja s vrijednošću
0xab.
- sve konstante definirati u
Pokazati da je navedeno napravljeno ispisom adresa odgovarajućih elemenata (npr. adresa neke funkcije, adresa globalne varijable, adresa lokalne varijable na stogu).
Ako odjeljak .eh_frame stvara probleme, odbaciti ga sa /DISCARD/ : { *(.eh_frame) }
Primjer prikazan na predavanju (prije par godina) lab2-demo.diff.
Ispitivanje koda, traženje grešaka
Upoznati se s ispitnim pokretanjem i traženjem grešaka korištenjem alata
gdb. U datoteci Makefile već postoje pripremljeni predmeti prevođenja debug_qemu i debug_gdb.