Estetyka kodu a szczególne przypadki.

0

Witam.
Pisze sobie emulator 8086 od jakiegoś czasu i pewną częśc kodu przepisuje od nowa, mam pewien problem, a mianowicie czy dopuszczalne ze względów estetycznych są switche (i to gołe, bez zawartości) na ponad 500 linii (od 0x00 do 0xff)?
Pierwszym pomysłem było opakowanie instrukcji w klasę i wykonywanie jej na podstawie pewnych danych które tą instrukcje opisują (Kierunek (mem,reg/reg,mem), Wielkość(bajt, słowo), i jeszcze kilku innych) ale to się kiepsko sprawdziło już po implementacji kilkunastu instrukcji, overhead wynikający z identyfikacji instrukcji run-time był chyba troche za duży.
Przejrzałem kody innych emulatorów(tylko że w C, nie C++) i tam własnie widziałem takie ogromne switche, po chwili zastanowienia jest to faktycznie najbardziej wydajne rozwiązanie.
Mam jescze pomysł aby zrobić tablice callbacków i switch by zniknął.
I tu moje pytanie, czy warto kombinować aby nie tworzyć takich 'potworków', czy w niektórych przypadkach można po prostu przymknąć oko? Jak myślicie?

3

To ma po pierwsze działać, po drugie działać szybko, a dopiero po trzecie wyglądać.
A od emulatora raczej wymaga się żeby był szybki - piękny kod nie powinien być narzutem.

po chwili zastanowienia jest to faktycznie najbardziej wydajne rozwiązanie.
Najbardziej wydajne jest to co jest najbardziej wydajne - a to trzeba zbadać. Chwila zastanowienia może dać zły wynik.

0

No wiem, wiem.
W poprzedniej wersji nakumulowała mi się masa ifów sprawdzających co to własciwie za instrukcja, i to na pewno było kiepskie.
A takie indywidualne podejscie do każdej instrukcji to właściwie tylko kilka sprawdzeń i bezpośrednia interpretacja, czyli szybciej.
Chyba zostane jednak przy ogromnym switchu : P

1 użytkowników online, w tym zalogowanych: 0, gości: 1