Jestem coraz bliżej opublikowania własnego jądra. Ponieważ czasu mało i jestem zbyt mało doświadczony w temacie, to musiałem używać wiele haków. Pierwszym jest obsługa modułów. Moduł jest ładowany przez Gruba, a system inicjalizuje go poprzez skok na początek pamięci modułu (adres jest dostarczany poprzez specjalną strukturę w pamięci utworzoną przez Gruba). By to wszystko mogło jakoś działać, to postanowiłem, że jądro, przed odwołaniem się do kodu modułu, będzie pod odpowiedni obszar w pamięci kłaść adres początku modułu. Wiem, że to nie bardzo będzie działać z wielordzeniowością i podobnymi rozwiązaniami, chyba że będę stronicować pamięć dla takich modułów, lecz to i tak wykracza na razie poza moje możliwości - dopiero się uczę programować systemy operacyjne,
Teraz jest problem - wszelkie skoki, czyli instrukcje sterujące (warunki, pętle, skok do etykiety), spowodują potrójny błąd procesora, więc reset komputera. Czy da się zmusić gcc, by generował kod, obliczający wszelkie adresy na podstawie wartości ze zmiennej pod stałym adresem?
Tak, by:
int i;
while ('\0' != *str) {
...
++str;
}
Nie powodowało restartu komputera?