OT:programovani v C

Pavel Troller patrol@sinus.cz
Úterý Červen 16 11:09:35 CEST 2009


> Urcite bude problem s kniznicou, alebo kompilatorom, taketo chovanie
> predsa nie je normalne... Ked sme pozerali asm, tak pri
> neoptimalizovanej verzii kompilator volal memcpy, ktora pouzila bytovy
> pristup bez ohladu na typ predanych pointerov a aj bez ohladu na
> pouzitie explicitneho pretypovania. Pri zapnuti optimalizacie
> kompilator nevolal funkciu, ale inline pouzil kopirovaci kod, ktory
> *predpokladal* zarovnany pointer. No a teraz je otazka, ci ten kod bol
> z kniznice a kompilator ho len skopiroval ako inline (t.j. chyba je v
> optimalizovanej verzii funkcie v kniznici - ma vobec kniznica rozne
> verzie funkcii?), alebo sa kompilator vykaslal na kniznicu a pouzil
> svoju metodu miesto memcpy ("inteligentny" kompilator, ktory pozna
> klucove slovo memcpy, ale nedomysli dosledky)...
> Nakoniec pri explicitnom pretypovani kompilator aj pri zapnutej
> optimalizacii vola kniznicnu funkciu call-om a vsetko funguje spravne.
> 
> miro
> 
> 
Zdravim,
  mne by zase zajimalo, jak je mozne, ze pri takoveto banalni chybe cely
system vcetne OS vytuhne. Jak je to mozne ?? Neslo snad o kernelovou aplikaci,
byl to userspace (sorry, neznam terminologii windows, ale snad tam taky neco
takoveho jako systemova a uzivatelska uroven existuje) ? Jde o to, ze jak
znam vetsinu procesoru (treba Motoroly jsou taky "picky" ohledne zarovnani
kodu), tak proste pokud nejsou splneny podminky pro vykonani instrukce, vznikne
nejaky trap (napr. Unaligned Address, Illegal operand nebo Illegal
instruction), ten by mel byt radne vektorovan do jadra OS a to by melo radne
zareagovat, napr. ukoncit aplikaci, ale system by mel zustat plne stabilni.
Zda se mi, ze nekde byla velmi hluboka chyba nejen v memcpy()...
  S pozdravem Pavel Troller



Další informace o konferenci Hw-list