[ balasch @ 27.06.2007. 13:22 ] @
Pozdrav

Moj zadatak je da za Praktikum pronadjem i popravim gresku koja se nalazi u kodu dcc decompilera.
dakle, da dekompajlira i datoteke vece od 30KB. poslije dvije sedmice gledanja u kod i dalje sam na pocetku, bolje reci tapkam u mjestu. Moje pitanje je dali neko ima zivaca da mi pomogne ili mozda ima neko ko se ranije vec susretao sa dcc decompiler-om i vec zna gdje konkretno pravi gresku.

na stranici dcc-a stoji ovo;
Note
Dcc has a fundamental implementation flaw that limits it to about 30KB of input binary program, i.e. it currently handles toy programs only! The problem is that pointers are kept in many places; many of these pointers point to elements of arrays. The arrays are all of variable size; the realloc system call can and will change the virtual addresses of these arrays, thus invalidating the pointers. Because of this, results are unpredictable as soon as one array is resized. (However, a segmentation fault is likely when this happens). The arrays are sized such that they don't get reallocated for input binaries less than about 30KB.

Profesor bi bio zadovoljan i sa "djelimicnim" rjesenjem tj. da povecam tu granicu umjesto 30KB da prolaze i oni od 150KB i da poslije 150KB pravi greske.
[ Nedeljko @ 27.06.2007. 14:00 ] @
Pa, premalo si dao informacija o problemu. Za početak, šta je to dcc i gde se može naći source?
[ balasch @ 27.06.2007. 17:19 ] @
radi se o open source dekompajleru za C programe (386, DOS) a djelo je nekoliko (tadasnjih) studenata iz australije. napravil su ga 1994 mislim.

moze se naci na http://www.itee.uq.edu.au/~cristina/dcc.html

sudeci po onome sto stoji na dnu njihove stranice i onome sto je meni profesor "nabrzaka" isprico problem je u alociranju memorije. laiku ko meni to i ne znaci puno. ako sam ga dobro skonto, profesora, rjesnje bi bilo pointer na pointer ali bi bio zadovoljan i sa najprostijim rjesenjem sto podrazumjeva da u toku alociranja memorije aloziram duplo vise ili deset puta vise nego sto je sad zadato.

link na kod programa i ostale datoteke
http://www.itee.uq.edu.au/~cristina/dcc/otherdcc.html


[ NastyBoy @ 27.06.2007. 23:58 ] @
Najjednostavnije reshenje bi ti bilo da zamenish te pointere koji pokazuju na elemente niza integer-ima koji predstavljaju indeks u nizu. U tom sluchaju realokacija niza nece imati nikakvih posledica (sve dok znash gde je osnovna adresa niza). Ne verujem da bi ti za to trebalo previshe vremena i truda, narochito ako iskoristish prednosti C++a u vidu preklapanja operatora* i operatora-> pa pointere zavijesh u klasicu koja ce ustvari predstavljati indeks u nizu.

A i "profesor bi bio zadovoljan sa 150KB" mi dovoljno govori koliko taj profesor u stvari razume u chemu je problem.
[ balasch @ 28.06.2007. 09:27 ] @
@NastyBoy, vec sad mi zvuci komplikovano
u svakom slucaju hvala i evo ja se bacam na poso pa ako sta uspijem javim
[ balasch @ 28.06.2007. 10:35 ] @
ne ide mi nikako :(
[ balasch @ 29.06.2007. 09:46 ] @
fakat nista da skontam i da uradim. a imam jos 7 dana za ovo :(
[ balasch @ 01.07.2007. 14:58 ] @
Citat:
NastyBoy: Najjednostavnije reshenje bi ti bilo da zamenish te pointere koji pokazuju na elemente niza integer-ima koji predstavljaju indeks u nizu. U tom sluchaju realokacija niza nece imati nikakvih posledica (sve dok znash gde je osnovna adresa niza). Ne verujem da bi ti za to trebalo previshe vremena i truda, narochito ako iskoristish prednosti C++a u vidu preklapanja operatora* i operatora-> pa pointere zavijesh u klasicu koja ce ustvari predstavljati indeks u nizu.


ljudi, jel moze neko da mi malo pojasni ovo :(
[ balasch @ 18.07.2007. 09:49 ] @
ja jos uvijek ov onisam skonto :(
nema nikog voljno da mi pogura dalje.
bas mi zapelo.